summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md5
-rw-r--r--bincompat-backward.whitelist.conf41
-rw-r--r--bincompat-forward.whitelist.conf357
-rw-r--r--build.sbt2
-rw-r--r--doc/LICENSE.md4
-rw-r--r--doc/License.rtf4
-rw-r--r--project/MiMa.scala2
-rw-r--r--project/Osgi.scala3
-rw-r--r--project/PartestUtil.scala2
-rw-r--r--project/VersionUtil.scala2
-rw-r--r--project/plugins.sbt2
-rwxr-xr-xscripts/jobs/integrate/bootstrap19
-rw-r--r--spec/03-types.md4
-rw-r--r--spec/04-basic-declarations-and-definitions.md4
-rw-r--r--spec/05-classes-and-objects.md20
-rw-r--r--spec/06-expressions.md13
-rw-r--r--spec/07-implicits.md6
-rw-r--r--src/compiler/scala/tools/nsc/Global.scala13
-rw-r--r--src/compiler/scala/tools/nsc/ast/TreeGen.scala2
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/Parsers.scala4
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/Scanners.scala2
-rw-r--r--src/compiler/scala/tools/nsc/settings/MutableSettings.scala4
-rw-r--r--src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala2
-rw-r--r--src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala37
-rw-r--r--src/compiler/scala/tools/nsc/transform/AddInterfaces.scala0
-rw-r--r--src/compiler/scala/tools/nsc/transform/TailCalls.scala2
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Adaptations.scala4
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/AnalyzerPlugins.scala2
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala2
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Contexts.scala2
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Implicits.scala52
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Macros.scala2
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/MethodSynthesis.scala18
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Namers.scala450
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/RefChecks.scala2
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala2
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala4
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala57
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Unapplies.scala2
-rw-r--r--src/library/scala/collection/JavaConverters.scala12
-rw-r--r--src/library/scala/collection/immutable/FilteredTraversableInternal.scala104
-rw-r--r--src/library/scala/collection/immutable/List.scala2
-rw-r--r--src/library/scala/collection/immutable/Map.scala2
-rw-r--r--src/library/scala/collection/immutable/Set.scala2
-rw-r--r--src/library/scala/collection/mutable/ArrayOps.scala76
-rw-r--r--src/library/scala/collection/mutable/ListBuffer.scala4
-rw-r--r--src/library/scala/collection/mutable/WrappedArray.scala71
-rw-r--r--src/library/scala/concurrent/BatchingExecutor.scala2
-rw-r--r--src/library/scala/concurrent/ExecutionContext.scala42
-rw-r--r--src/library/scala/concurrent/package.scala43
-rw-r--r--src/library/scala/sys/process/ProcessBuilder.scala7
-rw-r--r--src/library/scala/util/Either.scala614
-rw-r--r--src/library/scala/util/Properties.scala2
-rw-r--r--src/library/scala/util/matching/Regex.scala46
-rw-r--r--src/partest-extras/scala/tools/partest/StubErrorMessageTest.scala47
-rw-r--r--src/reflect/scala/reflect/internal/Depth.scala2
-rw-r--r--src/reflect/scala/reflect/internal/Symbols.scala17
-rw-r--r--src/reflect/scala/reflect/internal/pickling/UnPickler.scala21
-rw-r--r--src/reflect/scala/reflect/internal/tpe/FindMembers.scala14
-rw-r--r--src/reflect/scala/reflect/internal/transform/RefChecks.scala0
-rw-r--r--src/reflect/scala/reflect/io/ZipArchive.scala76
-rw-r--r--src/reflect/scala/reflect/runtime/JavaUniverseForce.scala2
-rw-r--r--src/repl/scala/tools/nsc/interpreter/ILoop.scala2
-rw-r--r--src/repl/scala/tools/nsc/interpreter/Pasted.scala7
-rw-r--r--src/scaladoc/scala/tools/nsc/doc/html/page/Entity.scala2
-rw-r--r--src/scalap/decoder.properties2
-rw-r--r--src/scalap/scala/tools/scalap/Classfile.scala6
-rw-r--r--src/scalap/scala/tools/scalap/Classfiles.scala8
-rw-r--r--test/benchmarks/project/plugins.sbt2
-rw-r--r--test/benchmarks/src/main/scala/scala/collection/immutable/ListBenchmark.scala10
-rw-r--r--test/benchmarks/src/main/scala/scala/collection/immutable/MapBenchmark.scala29
-rw-r--r--test/benchmarks/src/main/scala/scala/collection/immutable/SetBenchmark.scala29
-rw-r--r--test/checker-tests/fail1.scala17
-rw-r--r--test/checker-tests/fail10.scala23
-rw-r--r--test/checker-tests/fail12.scala20
-rw-r--r--test/checker-tests/fail2.scala50
-rw-r--r--test/checker-tests/fail6.scala61
-rw-r--r--test/checker-tests/fail7.scala70
-rw-r--r--test/debug/OBSOLETE0
-rw-r--r--test/debug/buildmanager/.gitignore0
-rw-r--r--test/debug/jvm/.gitignore0
-rw-r--r--test/debug/neg/.gitignore0
-rw-r--r--test/debug/pos/.gitignore0
-rw-r--r--test/debug/res/.gitignore0
-rw-r--r--test/debug/run/.gitignore0
-rw-r--r--test/debug/scalacheck/.gitignore0
-rw-r--r--test/debug/scalap/.gitignore0
-rw-r--r--test/debug/shootout/.gitignore0
-rw-r--r--test/disabled-windows/script/loadAndExecute.check1
-rwxr-xr-xtest/disabled-windows/script/loadAndExecute/lAndE1.scala3
-rwxr-xr-xtest/disabled-windows/script/loadAndExecute/lAndE2.scala1
-rwxr-xr-xtest/disabled-windows/script/loadAndExecute/loadAndExecute.scala3
-rwxr-xr-xtest/disabled-windows/script/utf8.bat11
-rw-r--r--test/disabled-windows/script/utf8.check2
-rwxr-xr-xtest/disabled-windows/script/utf8.scala26
-rw-r--r--test/disabled/buildmanager/overloaded_1/A.scala11
-rw-r--r--test/disabled/buildmanager/overloaded_1/overloaded_1.check6
-rw-r--r--test/disabled/buildmanager/overloaded_1/overloaded_1.test2
-rw-r--r--test/disabled/buildmanager/t2651_1/A.scala1
-rw-r--r--test/disabled/buildmanager/t2651_1/B.scala2
-rw-r--r--test/disabled/buildmanager/t2651_1/C.scala3
-rw-r--r--test/disabled/buildmanager/t2651_1/D.scala3
-rw-r--r--test/disabled/buildmanager/t2651_1/t2651_1.changes/A2.scala2
-rw-r--r--test/disabled/buildmanager/t2651_1/t2651_1.check19
-rw-r--r--test/disabled/buildmanager/t2651_1/t2651_1.test3
-rw-r--r--test/disabled/buildmanager/t2652/A.scala3
-rw-r--r--test/disabled/buildmanager/t2652/B.scala4
-rw-r--r--test/disabled/buildmanager/t2652/t2652.changes/A2.scala4
-rw-r--r--test/disabled/buildmanager/t2652/t2652.check9
-rw-r--r--test/disabled/buildmanager/t2652/t2652.test3
-rw-r--r--test/disabled/buildmanager/t4245/A.scala3
-rw-r--r--test/disabled/buildmanager/t4245/t4245.check6
-rw-r--r--test/disabled/buildmanager/t4245/t4245.test2
-rw-r--r--test/disabled/coder/Coder.scala212
-rw-r--r--test/disabled/coder/Dictionary.scala10
-rw-r--r--test/disabled/coder/dict.txt58111
-rw-r--r--test/disabled/jvm/JavaInteraction.check4
-rw-r--r--test/disabled/jvm/JavaInteraction.scala38
-rw-r--r--test/disabled/jvm/concurrent-future.check14
-rw-r--r--test/disabled/jvm/concurrent-future.scala122
-rw-r--r--test/disabled/neg/abstract-report3.check39
-rw-r--r--test/disabled/neg/abstract-report3.scala1
-rw-r--r--test/disabled/pos/caseclass-parents.flags1
-rw-r--r--test/disabled/pos/caseclass-parents.scala11
-rw-r--r--test/disabled/pos/caseclass-productN.flags1
-rw-r--r--test/disabled/pos/caseclass-productN.scala20
-rw-r--r--test/disabled/pos/spec-List.scala869
-rw-r--r--test/disabled/pos/t1545.scala18
-rw-r--r--test/disabled/pos/t1737/A.java3
-rw-r--r--test/disabled/pos/t1737/B.java1
-rw-r--r--test/disabled/pos/t1737/c.scala4
-rw-r--r--test/disabled/pos/t2919.scala12
-rw-r--r--test/disabled/presentation/akka.check492
-rw-r--r--test/disabled/presentation/akka.flags18
-rw-r--r--test/disabled/presentation/akka/Runner.scala3
-rw-r--r--test/disabled/presentation/akka/src/akka/AkkaException.scala40
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/Actor.scala503
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/ActorRef.scala1433
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/ActorRegistry.scala389
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/Actors.java108
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/BootableActorLoaderService.scala60
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/FSM.scala527
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/Scheduler.scala131
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/Supervisor.scala176
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/UntypedActor.scala134
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/package.scala23
-rw-r--r--test/disabled/presentation/akka/src/akka/config/Config.scala93
-rw-r--r--test/disabled/presentation/akka/src/akka/config/ConfigParser.scala74
-rw-r--r--test/disabled/presentation/akka/src/akka/config/Configuration.scala166
-rw-r--r--test/disabled/presentation/akka/src/akka/config/Configurator.scala21
-rw-r--r--test/disabled/presentation/akka/src/akka/config/Importer.scala64
-rw-r--r--test/disabled/presentation/akka/src/akka/config/SupervisionConfig.scala134
-rw-r--r--test/disabled/presentation/akka/src/akka/dataflow/DataFlow.scala165
-rw-r--r--test/disabled/presentation/akka/src/akka/dispatch/Dispatchers.scala227
-rw-r--r--test/disabled/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenDispatcher.scala305
-rw-r--r--test/disabled/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcher.scala165
-rw-r--r--test/disabled/presentation/akka/src/akka/dispatch/MailboxHandling.scala68
-rw-r--r--test/disabled/presentation/akka/src/akka/dispatch/MessageHandling.scala260
-rw-r--r--test/disabled/presentation/akka/src/akka/dispatch/ThreadBasedDispatcher.scala52
-rw-r--r--test/disabled/presentation/akka/src/akka/dispatch/ThreadPoolBuilder.scala259
-rw-r--r--test/disabled/presentation/akka/src/akka/event/EventHandler.scala235
-rw-r--r--test/disabled/presentation/akka/src/akka/event/JavaEventHandler.java35
-rw-r--r--test/disabled/presentation/akka/src/akka/japi/JavaAPI.scala108
-rw-r--r--test/disabled/presentation/akka/src/akka/remoteinterface/RemoteEventHandler.scala43
-rw-r--r--test/disabled/presentation/akka/src/akka/remoteinterface/RemoteInterface.scala493
-rw-r--r--test/disabled/presentation/akka/src/akka/routing/Iterators.scala49
-rw-r--r--test/disabled/presentation/akka/src/akka/routing/Listeners.scala37
-rw-r--r--test/disabled/presentation/akka/src/akka/routing/Pool.scala292
-rw-r--r--test/disabled/presentation/akka/src/akka/routing/Routers.scala87
-rw-r--r--test/disabled/presentation/akka/src/akka/routing/Routing.scala64
-rw-r--r--test/disabled/presentation/akka/src/akka/util/Address.scala29
-rw-r--r--test/disabled/presentation/akka/src/akka/util/AkkaLoader.scala94
-rw-r--r--test/disabled/presentation/akka/src/akka/util/Bootable.scala10
-rw-r--r--test/disabled/presentation/akka/src/akka/util/BoundedBlockingQueue.scala326
-rw-r--r--test/disabled/presentation/akka/src/akka/util/Crypt.scala44
-rw-r--r--test/disabled/presentation/akka/src/akka/util/Duration.scala437
-rw-r--r--test/disabled/presentation/akka/src/akka/util/HashCode.scala57
-rw-r--r--test/disabled/presentation/akka/src/akka/util/Helpers.scala99
-rw-r--r--test/disabled/presentation/akka/src/akka/util/ListenerManagement.scala81
-rw-r--r--test/disabled/presentation/akka/src/akka/util/LockUtil.scala197
-rw-r--r--test/disabled/presentation/akka/src/akka/util/ReflectiveAccess.scala232
-rw-r--r--test/disabled/presentation/akka/src/akka/util/package.scala27
-rw-r--r--test/disabled/presentation/akka/src/com/eaio/util/lang/Hex.java215
-rw-r--r--test/disabled/presentation/akka/src/com/eaio/uuid/MACAddressParser.java116
-rw-r--r--test/disabled/presentation/akka/src/com/eaio/uuid/UUID.java311
-rw-r--r--test/disabled/presentation/akka/src/com/eaio/uuid/UUIDGen.java364
-rw-r--r--test/disabled/presentation/akka/src/com/eaio/uuid/UUIDHelper.java86
-rw-r--r--test/disabled/presentation/akka/src/com/eaio/uuid/UUIDHolder.java42
-rw-r--r--test/disabled/presentation/ide-bug-1000450/Runner.scala6
-rw-r--r--test/disabled/presentation/ide-bug-1000450/src/Ranges.scala5
-rw-r--r--test/disabled/presentation/ide-bug-1000508.check163
-rw-r--r--test/disabled/presentation/ide-bug-1000508/Runner.scala3
-rw-r--r--test/disabled/presentation/ide-bug-1000508/src/Foo.scala3
-rw-r--r--test/disabled/presentation/ide-bug-1000545/Runner.scala3
-rw-r--r--test/disabled/presentation/ide-bug-1000545/src/CompletionFails.scala25
-rw-r--r--test/disabled/presentation/ide-t1000620.check37
-rw-r--r--test/disabled/presentation/ide-t1000620/Runner.scala3
-rw-r--r--test/disabled/presentation/ide-t1000620/src/a/A.scala5
-rw-r--r--test/disabled/presentation/ide-t1000620/src/b/B.scala8
-rw-r--r--test/disabled/presentation/shutdown-deadlock.check3
-rw-r--r--test/disabled/presentation/shutdown-deadlock/ShutdownDeadlockTest.scala45
-rw-r--r--test/disabled/presentation/shutdown-deadlock/src/arrays.scala937
-rw-r--r--test/disabled/presentation/simple-tests.check388
-rw-r--r--test/disabled/presentation/simple-tests.javaopts1
-rw-r--r--test/disabled/presentation/simple-tests.opts18
-rw-r--r--test/disabled/presentation/simple-tests/SimpleInteractiveTest.scala11
-rw-r--r--test/disabled/presentation/simple-tests/src/Tester.scala204
-rw-r--r--test/disabled/presentation/timeofday.check100
-rw-r--r--test/disabled/presentation/timeofday/Runner.scala3
-rw-r--r--test/disabled/presentation/timeofday/src/timeofday.scala35
-rw-r--r--test/disabled/properties.check158
-rw-r--r--test/disabled/properties/Runner.scala3
-rw-r--r--test/disabled/properties/src/properties.scala54
-rw-r--r--test/disabled/run/applet-prop.scala40
-rw-r--r--test/disabled/run/coder2/Coder2.scala212
-rw-r--r--test/disabled/run/coder2/Dictionary.scala10
-rw-r--r--test/disabled/run/docgenerator.check177
-rw-r--r--test/disabled/run/docgenerator.scala295
-rw-r--r--test/disabled/run/indylambda-specialization.scala15
-rw-r--r--test/disabled/run/javap.check18
-rw-r--r--test/disabled/run/javap.scala24
-rw-r--r--test/disabled/run/lisp.check26
-rw-r--r--test/disabled/run/lisp.scala518
-rw-r--r--test/disabled/run/script-positions.scala86
-rw-r--r--test/disabled/run/syncchannel.check1
-rw-r--r--test/disabled/run/syncchannel.scala6
-rw-r--r--test/disabled/run/t2886.scala7
-rw-r--r--test/disabled/run/t2946/Parsers.scala4
-rw-r--r--test/disabled/run/t2946/ResponseCommon.scala14
-rw-r--r--test/disabled/run/t2946/Test.scala7
-rw-r--r--test/disabled/run/t4146.scala7
-rw-r--r--test/disabled/run/t4279.scala38
-rw-r--r--test/disabled/run/t4532.check15
-rw-r--r--test/disabled/run/t4532.scala34
-rw-r--r--test/disabled/run/t4602.scala57
-rw-r--r--test/disabled/run/t6987.check1
-rw-r--r--test/disabled/run/t6987.scala43
-rw-r--r--test/disabled/run/t8946.scala29
-rw-r--r--test/disabled/scalacheck/HashTrieSplit.scala47
-rw-r--r--test/disabled/script/fact.args1
-rwxr-xr-xtest/disabled/script/fact.bat17
-rw-r--r--test/disabled/script/fact.check1
-rwxr-xr-xtest/disabled/script/fact.scala30
-rwxr-xr-xtest/disabled/script/second.bat3
-rw-r--r--test/disabled/script/second.check1
-rwxr-xr-xtest/disabled/script/second.scala3
-rwxr-xr-xtest/disabled/script/t1015.bat12
-rwxr-xr-xtest/disabled/script/t1015.scala26
-rwxr-xr-xtest/disabled/script/t1017.bat15
-rwxr-xr-xtest/disabled/script/t1017.scala29
-rw-r--r--test/files/neg/ambiguous-same.check6
-rw-r--r--test/files/neg/ambiguous-same.scala15
-rw-r--r--test/files/neg/specification-scopes.check18
-rw-r--r--test/files/neg/specification-scopes/P_1.scala9
-rw-r--r--test/files/neg/specification-scopes/P_2.scala43
-rw-r--r--test/files/neg/t2712.flags1
-rw-r--r--test/files/neg/t5148.check27
-rw-r--r--test/files/neg/t6889.check7
-rw-r--r--test/files/neg/t6889.scala1
-rw-r--r--test/files/neg/t7475d.check7
-rw-r--r--test/files/neg/t8417.check15
-rw-r--r--test/files/neg/t8417.flags1
-rw-r--r--test/files/neg/t8417.scala6
-rw-r--r--test/files/neg/userdefined_apply.check25
-rw-r--r--test/files/neg/userdefined_apply.scala57
-rw-r--r--test/files/pos/t10206.scala15
-rw-r--r--test/files/pos/userdefined_apply.scala54
-rw-r--r--test/files/pos/userdefined_apply_poly_overload.scala13
-rw-r--r--test/files/run/StubErrorBInheritsFromA.check6
-rw-r--r--test/files/run/StubErrorBInheritsFromA.scala22
-rw-r--r--test/files/run/StubErrorComplexInnerClass.check6
-rw-r--r--test/files/run/StubErrorComplexInnerClass.scala42
-rw-r--r--test/files/run/StubErrorHK.check6
-rw-r--r--test/files/run/StubErrorHK.scala22
-rw-r--r--test/files/run/StubErrorReturnTypeFunction.check6
-rw-r--r--test/files/run/StubErrorReturnTypeFunction.scala37
-rw-r--r--test/files/run/StubErrorReturnTypeFunction2.check6
-rw-r--r--test/files/run/StubErrorReturnTypeFunction2.scala37
-rw-r--r--test/files/run/StubErrorReturnTypePolyFunction.check15
-rw-r--r--test/files/run/StubErrorReturnTypePolyFunction.scala37
-rw-r--r--test/files/run/StubErrorSubclasses.check6
-rw-r--r--test/files/run/StubErrorSubclasses.scala21
-rw-r--r--test/files/run/StubErrorTypeDef.check16
-rw-r--r--test/files/run/StubErrorTypeDef.scala26
-rw-r--r--test/files/run/StubErrorTypeclass.check6
-rw-r--r--test/files/run/StubErrorTypeclass.scala21
-rw-r--r--test/files/run/reflection-attachments.check0
-rw-r--r--test/files/run/repl-colon-type.check8
-rw-r--r--test/files/run/t10231/A_1.java11
-rw-r--r--test/files/run/t10231/Test_2.scala5
-rw-r--r--test/files/run/t5717.check1
-rw-r--r--test/files/run/t5717.scala2
-rw-r--r--test/files/run/t6440b.check11
-rw-r--r--test/files/run/t6440b.scala6
-rw-r--r--test/files/run/typetags_without_scala_reflect_typetag_lookup.scala2
-rw-r--r--test/files/run/typetags_without_scala_reflect_typetag_manifest_interop.scala2
-rw-r--r--test/flaky/pos/t2868/Jann.java5
-rw-r--r--test/flaky/pos/t2868/Nest.java3
-rw-r--r--test/flaky/pos/t2868/pick_1.scala7
-rw-r--r--test/flaky/pos/t2868/t2868_src_2.scala6
-rw-r--r--test/junit/scala/tools/nsc/typechecker/Implicits.scala39
-rw-r--r--test/pending/buildmanager/t2443/BitSet.scala2
-rw-r--r--test/pending/buildmanager/t2443/t2443.changes/BitSet2.scala1
-rw-r--r--test/pending/buildmanager/t2443/t2443.check6
-rw-r--r--test/pending/buildmanager/t2443/t2443.test3
-rw-r--r--test/pending/jvm/cf-attributes.check50
-rw-r--r--test/pending/jvm/cf-attributes.scala146
-rw-r--r--test/pending/jvm/constant-optimization/Foo_1.flags1
-rw-r--r--test/pending/jvm/constant-optimization/Foo_1.scala9
-rw-r--r--test/pending/jvm/constant-optimization/Test.scala27
-rw-r--r--test/pending/jvm/javasigs.check321
-rw-r--r--test/pending/jvm/javasigs.scala78
-rw-r--r--test/pending/jvm/t2705/GenericInterface.java1
-rw-r--r--test/pending/jvm/t2705/Methods.java4
-rw-r--r--test/pending/jvm/t2705/t2705.scala5
-rw-r--r--test/pending/neg/dot-classpath.flags1
-rw-r--r--test/pending/neg/dot-classpath/S_1.scala3
-rw-r--r--test/pending/neg/dot-classpath/S_2.scala3
-rw-r--r--test/pending/neg/macro-invalidusage-badbounds-b.check4
-rw-r--r--test/pending/neg/macro-invalidusage-badbounds-b.flags1
-rw-r--r--test/pending/neg/macro-invalidusage-badbounds-b/Impls_1.scala5
-rw-r--r--test/pending/neg/macro-invalidusage-badbounds-b/Macros_Test_2.scala8
-rw-r--r--test/pending/neg/reify_packed.check4
-rw-r--r--test/pending/neg/reify_packed.scala15
-rw-r--r--test/pending/neg/t0653.scala30
-rw-r--r--test/pending/neg/t1557.scala18
-rw-r--r--test/pending/neg/t1800.scala28
-rw-r--r--test/pending/neg/t2080.scala17
-rw-r--r--test/pending/neg/t3152.scala8
-rw-r--r--test/pending/neg/t3633/test/Test.scala23
-rw-r--r--test/pending/neg/t5008.scala165
-rw-r--r--test/pending/neg/t5589neg.check37
-rw-r--r--test/pending/neg/t5589neg.flags1
-rw-r--r--test/pending/neg/t5589neg.scala6
-rw-r--r--test/pending/neg/t5589neg2.check9
-rw-r--r--test/pending/neg/t5589neg2.scala13
-rw-r--r--test/pending/neg/t5618.check7
-rw-r--r--test/pending/neg/t5618.scala27
-rw-r--r--test/pending/neg/t5729.check7
-rw-r--r--test/pending/neg/t5729.scala6
-rw-r--r--test/pending/neg/t6375.check27
-rw-r--r--test/pending/neg/t6375.flags1
-rw-r--r--test/pending/neg/t6375.scala67
-rw-r--r--test/pending/neg/t7441.check6
-rw-r--r--test/pending/neg/t7441.scala7
-rw-r--r--test/pending/neg/t7886.scala22
-rw-r--r--test/pending/neg/t7886b.scala23
-rw-r--r--test/pending/neg/t8079d.check4
-rw-r--r--test/pending/neg/t8079d.scala4
-rw-r--r--test/pending/neg/tcpoly_typealias_eta.scala46
-rw-r--r--test/pending/neg/tcpoly_variance_enforce_getter_setter.scala12
-rw-r--r--test/pending/neg/type-diagnostics.scala11
-rw-r--r--test/pending/pos/bug4704.scala36
-rw-r--r--test/pending/pos/inference.scala41
-rw-r--r--test/pending/pos/misc/A.java13
-rw-r--r--test/pending/pos/misc/B.scala7
-rw-r--r--test/pending/pos/misc/J.java4
-rw-r--r--test/pending/pos/misc/S.scala4
-rw-r--r--test/pending/pos/no-widen-locals.flags1
-rw-r--r--test/pending/pos/no-widen-locals.scala19
-rw-r--r--test/pending/pos/nothing.scala24
-rw-r--r--test/pending/pos/overloading-boundaries.scala37
-rw-r--r--test/pending/pos/pattern-typing.scala29
-rw-r--r--test/pending/pos/sig/sigs.java6
-rw-r--r--test/pending/pos/sig/sigs.scala10
-rw-r--r--test/pending/pos/sig/sigtest.scala3
-rw-r--r--test/pending/pos/t0621.scala7
-rw-r--r--test/pending/pos/t1336.scala10
-rw-r--r--test/pending/pos/t1476.scala23
-rw-r--r--test/pending/pos/t1786.scala27
-rw-r--r--test/pending/pos/t2071.scala21
-rw-r--r--test/pending/pos/t2173.scala12
-rw-r--r--test/pending/pos/t3943/Outer_1.java14
-rw-r--r--test/pending/pos/t3943/test_2.scala8
-rw-r--r--test/pending/pos/t4012.scala7
-rw-r--r--test/pending/pos/t4123.scala14
-rw-r--r--test/pending/pos/t4436.scala3
-rw-r--r--test/pending/pos/t4541.scala10
-rw-r--r--test/pending/pos/t4606.scala29
-rw-r--r--test/pending/pos/t4612.scala15
-rw-r--r--test/pending/pos/t4683.scala11
-rw-r--r--test/pending/pos/t4695/T_1.scala4
-rw-r--r--test/pending/pos/t4695/T_2.scala4
-rw-r--r--test/pending/pos/t4787.scala4
-rw-r--r--test/pending/pos/t4790.scala4
-rw-r--r--test/pending/pos/t5082.scala8
-rw-r--r--test/pending/pos/t5231.scala18
-rw-r--r--test/pending/pos/t5265.scala21
-rw-r--r--test/pending/pos/t5400.scala14
-rw-r--r--test/pending/pos/t5459.scala48
-rw-r--r--test/pending/pos/t5503.flags1
-rw-r--r--test/pending/pos/t5503.scala18
-rw-r--r--test/pending/pos/t5521.scala3
-rw-r--r--test/pending/pos/t5534.scala11
-rw-r--r--test/pending/pos/t5559.scala23
-rw-r--r--test/pending/pos/t5564.scala5
-rw-r--r--test/pending/pos/t5579.scala29
-rw-r--r--test/pending/pos/t5585.scala18
-rw-r--r--test/pending/pos/t5589.scala22
-rw-r--r--test/pending/pos/t5712.scala14
-rw-r--r--test/pending/pos/t5877.scala5
-rw-r--r--test/pending/pos/t5954/T_1.scala8
-rw-r--r--test/pending/pos/t5954/T_2.scala8
-rw-r--r--test/pending/pos/t5954/T_3.scala8
-rw-r--r--test/pending/pos/t6225.scala11
-rw-r--r--test/pending/pos/t7234.scala15
-rw-r--r--test/pending/pos/t7234b.scala20
-rw-r--r--test/pending/pos/t7778/Foo_1.java6
-rw-r--r--test/pending/pos/t7778/Test_2.scala3
-rw-r--r--test/pending/pos/t8079c.scala7
-rw-r--r--test/pending/pos/t8128b.scala18
-rw-r--r--test/pending/pos/t8363b.scala7
-rw-r--r--test/pending/pos/those-kinds-are-high.scala96
-rw-r--r--test/pending/pos/treecheckers.flags1
-rw-r--r--test/pending/pos/treecheckers/c1.scala12
-rw-r--r--test/pending/pos/treecheckers/c2.scala1
-rw-r--r--test/pending/pos/treecheckers/c3.scala8
-rw-r--r--test/pending/pos/treecheckers/c4.scala9
-rw-r--r--test/pending/pos/treecheckers/c5.scala3
-rw-r--r--test/pending/pos/treecheckers/c6.scala4
-rw-r--r--test/pending/pos/unappgadteval.scala77
-rw-r--r--test/pending/pos/virt.scala9
-rw-r--r--test/pending/presentation/context-bounds1.check51
-rw-r--r--test/pending/presentation/context-bounds1/Test.scala3
-rw-r--r--test/pending/presentation/context-bounds1/src/ContextBounds.scala13
-rw-r--r--test/pending/reify_typeof.check10
-rw-r--r--test/pending/reify_typeof.scala14
-rw-r--r--test/pending/run/TestFlatMap.scala29
-rw-r--r--test/pending/run/bug4704run.scala10
-rw-r--r--test/pending/run/delambdafy-lambdametafactory.scala50
-rw-r--r--test/pending/run/hk-lub-fail.scala37
-rw-r--r--test/pending/run/idempotency-partial-functions.scala28
-rw-r--r--test/pending/run/implicit-classes.scala17
-rw-r--r--test/pending/run/inline-ex-handlers.check491
-rw-r--r--test/pending/run/inline-ex-handlers.scala329
-rw-r--r--test/pending/run/instanceOfAndTypeMatching.scala192
-rw-r--r--test/pending/run/jar-version.scala11
-rw-r--r--test/pending/run/macro-expand-default.flags1
-rw-r--r--test/pending/run/macro-expand-default/Impls_1.scala10
-rw-r--r--test/pending/run/macro-expand-default/Macros_Test_2.scala8
-rw-r--r--test/pending/run/macro-expand-implicit-macro-defeats-type-inference.check6
-rw-r--r--test/pending/run/macro-expand-implicit-macro-defeats-type-inference.flags1
-rw-r--r--test/pending/run/macro-expand-implicit-macro-defeats-type-inference/Impls_1.scala10
-rw-r--r--test/pending/run/macro-expand-implicit-macro-defeats-type-inference/Macros_Test_2.scala6
-rw-r--r--test/pending/run/macro-expand-macro-has-context-bound.check1
-rw-r--r--test/pending/run/macro-expand-macro-has-context-bound.flags1
-rw-r--r--test/pending/run/macro-expand-macro-has-context-bound/Impls_1.scala10
-rw-r--r--test/pending/run/macro-expand-macro-has-context-bound/Macros_Test_2.scala4
-rw-r--r--test/pending/run/macro-expand-named.flags1
-rw-r--r--test/pending/run/macro-expand-named/Impls_1.scala10
-rw-r--r--test/pending/run/macro-expand-named/Macros_Test_2.scala5
-rw-r--r--test/pending/run/macro-expand-tparams-prefix-e1.check3
-rw-r--r--test/pending/run/macro-expand-tparams-prefix-e1.flags1
-rw-r--r--test/pending/run/macro-expand-tparams-prefix-e1/Impls_1.scala12
-rw-r--r--test/pending/run/macro-expand-tparams-prefix-e1/Macros_Test_2.scala13
-rw-r--r--test/pending/run/macro-expand-tparams-prefix-f1.check3
-rw-r--r--test/pending/run/macro-expand-tparams-prefix-f1.flags1
-rw-r--r--test/pending/run/macro-expand-tparams-prefix-f1/Impls_1.scala12
-rw-r--r--test/pending/run/macro-expand-tparams-prefix-f1/Macros_Test_2.scala13
-rw-r--r--test/pending/run/macro-quasiinvalidbody-a.check1
-rw-r--r--test/pending/run/macro-quasiinvalidbody-a.flags1
-rw-r--r--test/pending/run/macro-quasiinvalidbody-a/Impls_1.scala5
-rw-r--r--test/pending/run/macro-quasiinvalidbody-a/Macros_Test_2.scala10
-rw-r--r--test/pending/run/macro-quasiinvalidbody-b.check1
-rw-r--r--test/pending/run/macro-quasiinvalidbody-b.flags1
-rw-r--r--test/pending/run/macro-quasiinvalidbody-b/Impls_1.scala7
-rw-r--r--test/pending/run/macro-quasiinvalidbody-b/Macros_Test_2.scala10
-rw-r--r--test/pending/run/macro-reify-array.flags1
-rw-r--r--test/pending/run/macro-reify-array/Macros_1.scala11
-rw-r--r--test/pending/run/macro-reify-array/Test_2.scala4
-rw-r--r--test/pending/run/macro-reify-groundtypetag-hktypeparams-tags.check2
-rw-r--r--test/pending/run/macro-reify-groundtypetag-hktypeparams-tags/Test.scala9
-rw-r--r--test/pending/run/macro-reify-tagful-b.check1
-rw-r--r--test/pending/run/macro-reify-tagful-b.flags1
-rw-r--r--test/pending/run/macro-reify-tagful-b/Macros_1.scala11
-rw-r--r--test/pending/run/macro-reify-tagful-b/Test_2.scala4
-rw-r--r--test/pending/run/macro-reify-tagless-b.check3
-rw-r--r--test/pending/run/macro-reify-tagless-b.flags1
-rw-r--r--test/pending/run/macro-reify-tagless-b/Impls_Macros_1.scala11
-rw-r--r--test/pending/run/macro-reify-tagless-b/Test_2.scala13
-rw-r--r--test/pending/run/macro-reify-typetag-hktypeparams-notags.check2
-rw-r--r--test/pending/run/macro-reify-typetag-hktypeparams-notags/Test.scala9
-rw-r--r--test/pending/run/macro-reify-typetag-hktypeparams-tags.check2
-rw-r--r--test/pending/run/macro-reify-typetag-hktypeparams-tags/Test.scala9
-rw-r--r--test/pending/run/macro-term-declared-in-anonymous-explicit-import/Impls_1.scala11
-rw-r--r--test/pending/run/macro-term-declared-in-anonymous-explicit-import/Macros_Test_2.scala6
-rw-r--r--test/pending/run/origins.check4
-rw-r--r--test/pending/run/origins.flags1
-rw-r--r--test/pending/run/origins.scala21
-rw-r--r--test/pending/run/partial-anyref-spec.check13
-rw-r--r--test/pending/run/partial-anyref-spec.scala31
-rw-r--r--test/pending/run/reflection-mem-eval.scala26
-rw-r--r--test/pending/run/reify_addressbook.check30
-rw-r--r--test/pending/run/reify_addressbook.scala65
-rw-r--r--test/pending/run/reify_brainf_ck.check4
-rw-r--r--test/pending/run/reify_brainf_ck.scala79
-rw-r--r--test/pending/run/reify_callccinterpreter.check3
-rw-r--r--test/pending/run/reify_callccinterpreter.scala88
-rw-r--r--test/pending/run/reify_closure2b.check2
-rw-r--r--test/pending/run/reify_closure2b.scala21
-rw-r--r--test/pending/run/reify_closure3b.check2
-rw-r--r--test/pending/run/reify_closure3b.scala23
-rw-r--r--test/pending/run/reify_closure4b.check2
-rw-r--r--test/pending/run/reify_closure4b.scala23
-rw-r--r--test/pending/run/reify_closure5b.check2
-rw-r--r--test/pending/run/reify_closure5b.scala21
-rw-r--r--test/pending/run/reify_closure9a.check1
-rw-r--r--test/pending/run/reify_closure9a.scala18
-rw-r--r--test/pending/run/reify_closure9b.check1
-rw-r--r--test/pending/run/reify_closure9b.scala18
-rw-r--r--test/pending/run/reify_closures11.check1
-rw-r--r--test/pending/run/reify_closures11.scala16
-rw-r--r--test/pending/run/reify_gadts.check1
-rw-r--r--test/pending/run/reify_gadts.scala39
-rw-r--r--test/pending/run/reify_newimpl_07.scala14
-rw-r--r--test/pending/run/reify_newimpl_08.scala16
-rw-r--r--test/pending/run/reify_newimpl_09.scala13
-rw-r--r--test/pending/run/reify_newimpl_09a.scala13
-rw-r--r--test/pending/run/reify_newimpl_09b.scala14
-rw-r--r--test/pending/run/reify_newimpl_09c.scala20
-rw-r--r--test/pending/run/reify_newimpl_10.scala14
-rw-r--r--test/pending/run/reify_newimpl_16.scala17
-rw-r--r--test/pending/run/reify_newimpl_17.scala20
-rw-r--r--test/pending/run/reify_newimpl_28.scala17
-rw-r--r--test/pending/run/reify_newimpl_32.scala17
-rw-r--r--test/pending/run/reify_newimpl_34.scala18
-rw-r--r--test/pending/run/reify_newimpl_46.scala15
-rw-r--r--test/pending/run/reify_newimpl_53.scala18
-rw-r--r--test/pending/run/reify_simpleinterpreter.check2
-rw-r--r--test/pending/run/reify_simpleinterpreter.scala75
-rw-r--r--test/pending/run/signals.scala22
-rw-r--r--test/pending/run/sigtp.check11
-rw-r--r--test/pending/run/sigtp.scala17
-rw-r--r--test/pending/run/string-reverse.scala22
-rw-r--r--test/pending/run/structural-types-vs-anon-classes.scala17
-rw-r--r--test/pending/run/t0508x.scala21
-rw-r--r--test/pending/run/t1980.scala27
-rw-r--r--test/pending/run/t2034.scala15
-rw-r--r--test/pending/run/t2364.check1
-rw-r--r--test/pending/run/t2364.scala60
-rw-r--r--test/pending/run/t2897.scala22
-rw-r--r--test/pending/run/t3609.scala28
-rw-r--r--test/pending/run/t3669.scala22
-rw-r--r--test/pending/run/t3832.scala7
-rw-r--r--test/pending/run/t3857.check11
-rw-r--r--test/pending/run/t3857.scala13
-rw-r--r--test/pending/run/t3899.check4
-rw-r--r--test/pending/run/t3899/Base_1.java5
-rw-r--r--test/pending/run/t3899/Derived_2.scala30
-rw-r--r--test/pending/run/t4098.scala9
-rw-r--r--test/pending/run/t4291.check87
-rw-r--r--test/pending/run/t4291.scala19
-rw-r--r--test/pending/run/t4460.scala12
-rw-r--r--test/pending/run/t4511.scala10
-rw-r--r--test/pending/run/t4511b.scala25
-rw-r--r--test/pending/run/t4574.scala13
-rw-r--r--test/pending/run/t4713/JavaAnnots.java14
-rw-r--r--test/pending/run/t4713/Problem.scala5
-rw-r--r--test/pending/run/t4971.scala16
-rw-r--r--test/pending/run/t4996.scala15
-rw-r--r--test/pending/run/t5258b.check1
-rw-r--r--test/pending/run/t5258b.scala9
-rw-r--r--test/pending/run/t5258c.check1
-rw-r--r--test/pending/run/t5258c.scala9
-rw-r--r--test/pending/run/t5284.scala14
-rw-r--r--test/pending/run/t5334_1.scala9
-rw-r--r--test/pending/run/t5334_2.scala9
-rw-r--r--test/pending/run/t5427a.check1
-rw-r--r--test/pending/run/t5427a.scala10
-rw-r--r--test/pending/run/t5427b.check1
-rw-r--r--test/pending/run/t5427b.scala11
-rw-r--r--test/pending/run/t5427c.check1
-rw-r--r--test/pending/run/t5427c.scala13
-rw-r--r--test/pending/run/t5427d.check1
-rw-r--r--test/pending/run/t5427d.scala11
-rw-r--r--test/pending/run/t5610b.check1
-rw-r--r--test/pending/run/t5610b.scala21
-rw-r--r--test/pending/run/t5692.flags1
-rw-r--r--test/pending/run/t5692/Impls_Macros_1.scala9
-rw-r--r--test/pending/run/t5692/Test_2.scala4
-rw-r--r--test/pending/run/t5722.scala6
-rw-r--r--test/pending/run/t5726a.scala17
-rw-r--r--test/pending/run/t5726b.scala16
-rw-r--r--test/pending/run/t5866b.scala17
-rw-r--r--test/pending/run/t5882.scala14
-rw-r--r--test/pending/run/t5943b1.scala10
-rw-r--r--test/pending/run/t5943b2.scala10
-rw-r--r--test/pending/run/t6387.check1
-rw-r--r--test/pending/run/t6387.scala16
-rw-r--r--test/pending/run/t6408.scala11
-rw-r--r--test/pending/run/t6591_4.check1
-rw-r--r--test/pending/run/t6591_4.scala17
-rw-r--r--test/pending/run/t7733.check1
-rw-r--r--test/pending/run/t7733/Separate_1.scala5
-rw-r--r--test/pending/run/t7733/Test_2.scala9
-rw-r--r--test/pending/run/virtpatmat_anonfun_underscore.flags1
-rw-r--r--test/pending/run/virtpatmat_anonfun_underscore.scala4
-rw-r--r--test/pending/scalacheck/process.scala160
-rw-r--r--test/pending/script/dashi.check1
-rw-r--r--test/pending/script/dashi.flags1
-rw-r--r--test/pending/script/dashi/a.scala2
-rw-r--r--test/pending/script/error-messages.check7
-rw-r--r--test/pending/script/error-messages.scala9
-rw-r--r--test/pending/script/t2365.javaopts1
-rwxr-xr-xtest/pending/script/t2365.sh13
-rw-r--r--test/pending/script/t2365/Test.scala35
-rwxr-xr-xtest/pending/script/t2365/runner.scala9
-rw-r--r--test/pending/shootout/fasta.check171
-rw-r--r--test/pending/shootout/fasta.scala162
-rw-r--r--test/pending/shootout/fasta.scala.runner3
-rw-r--r--test/pending/shootout/harmonic.scala-2.scala14
-rw-r--r--test/pending/shootout/harmonic.scala-2.scala.runner16
-rw-r--r--test/pending/shootout/harmonic.scala-3.scala15
-rw-r--r--test/pending/shootout/harmonic.scala-3.scala.runner3
-rw-r--r--test/pending/shootout/heapsort.scala72
-rw-r--r--test/pending/shootout/heapsort.scala.runner3
-rw-r--r--test/pending/shootout/mandelbrot.scala-2.checkbin5011 -> 0 bytes
-rw-r--r--test/pending/shootout/mandelbrot.scala-2.scala79
-rw-r--r--test/pending/shootout/mandelbrot.scala-2.scala.runner3
-rw-r--r--test/pending/shootout/message.check1
-rw-r--r--test/pending/shootout/message.javaopts1
-rw-r--r--test/pending/shootout/message.scala47
-rw-r--r--test/pending/shootout/message.scala.runner3
-rw-r--r--test/pending/shootout/meteor.scala497
-rw-r--r--test/pending/shootout/meteor.scala-2.scala496
-rw-r--r--test/pending/shootout/meteor.scala-2.scala.runner3
-rw-r--r--test/pending/shootout/meteor.scala-3.scala557
-rw-r--r--test/pending/shootout/meteor.scala-3.scala.runner3
-rw-r--r--test/pending/shootout/meteor.scala-4.scala587
-rw-r--r--test/pending/shootout/meteor.scala-4.scala.runner3
-rw-r--r--test/pending/shootout/meteor.scala.runner3
-rw-r--r--test/pending/shootout/methcall.scala58
-rw-r--r--test/pending/shootout/methcall.scala.runner3
-rw-r--r--test/pending/shootout/nsieve.scala-4.check9
-rw-r--r--test/pending/shootout/nsieve.scala-4.scala45
-rw-r--r--test/pending/shootout/nsieve.scala-4.scala.runner3
-rw-r--r--test/pending/shootout/pidigits.check100
-rw-r--r--test/pending/shootout/pidigits.scala69
-rw-r--r--test/pending/shootout/pidigits.scala.runner3
-rw-r--r--test/pending/shootout/prodcons.scala64
-rw-r--r--test/pending/shootout/prodcons.scala.runner3
-rw-r--r--test/pending/shootout/random.scala32
-rw-r--r--test/pending/shootout/random.scala.runner3
-rw-r--r--test/pending/shootout/revcomp.scala-2.check171
-rw-r--r--test/pending/shootout/revcomp.scala-2.scala92
-rw-r--r--test/pending/shootout/revcomp.scala-2.scala.runner6
-rw-r--r--test/pending/shootout/revcomp.scala-3.check171
-rw-r--r--test/pending/shootout/revcomp.scala-3.scala147
-rw-r--r--test/pending/shootout/revcomp.scala-3.scala.runner6
-rw-r--r--test/pending/shootout/sieve.scala43
-rw-r--r--test/pending/shootout/sieve.scala.runner3
-rw-r--r--test/pending/specialized/SI-5005.check33
-rw-r--r--test/pending/specialized/SI-5005.scala36
-rw-r--r--test/pending/t7629-view-bounds-removal.check9
-rw-r--r--test/pending/t7629-view-bounds-removal.flags1
-rw-r--r--test/pending/t7629-view-bounds-removal.scala4
-rw-r--r--test/pending/typetags_typeof_x.check8
-rw-r--r--test/pending/typetags_typeof_x.scala14
-rw-r--r--[-rwxr-xr-x]test/scalacheck/concurrent-map.scala0
-rw-r--r--test/support/annotations/NestedAnnotations.java25
-rw-r--r--test/support/annotations/OuterEnum.java5
-rw-r--r--test/support/annotations/OuterTParams.java6
-rw-r--r--test/support/annotations/SourceAnnotation.java9
-rwxr-xr-xtest/support/annotations/mkAnnotationsJar.sh28
-rw-r--r--test/support/java-tests.txt97
-rwxr-xr-xtools/rm-orphan-checkfiles4
-rw-r--r--versions.properties38
667 files changed, 1782 insertions, 85703 deletions
diff --git a/README.md b/README.md
index 6a9360947f..4dd0c1f21d 100644
--- a/README.md
+++ b/README.md
@@ -14,13 +14,12 @@ In order to get in touch with Scala contributors, join the
# Reporting issues
-We're still using Jira for issue reporting, so please [report any issues](https://issues.scala-lang.org) over there.
-(We would love to start using GitHub Issues, but we're too resource-constrained to take on this migration right now.)
+Please report bugs at the [scala/bug issue tracker](https://github.com/scala/bug/issues). We use the [scala/scala-dev tracker](https://github.com/scala/scala-dev/issues) for coordinating bigger work items.
# Get in touch!
If you need some help with your PR at any time, please feel free to @-mention anyone from the list below, and we will do our best to help you out:
- | username | talk to me about... |
+| | username | talk to me about... |
--------------------------------------------------------------------------------------------------|----------------------------------------------------------------|---------------------------------------------------|
<img src="https://avatars.githubusercontent.com/adriaanm" height="50px" title="Adriaan Moors"/> | [`@adriaanm`](https://github.com/adriaanm) | type checker, pattern matcher, infrastructure, language spec |
<img src="https://avatars.githubusercontent.com/SethTisue" height="50px" title="Seth Tisue"/> | [`@SethTisue`](https://github.com/SethTisue) | build, developer docs, community build, Jenkins, library, the welcome-to-Scala experience |
diff --git a/bincompat-backward.whitelist.conf b/bincompat-backward.whitelist.conf
index 3d4e40a00d..1d4a6d82db 100644
--- a/bincompat-backward.whitelist.conf
+++ b/bincompat-backward.whitelist.conf
@@ -238,47 +238,6 @@ filter {
{
matchName="scala.concurrent.impl.Promise.toString"
problemName=MissingMethodProblem
- },
- // https://github.com/scala/scala/pull/5652
- {
- matchName="scala.collection.mutable.ArrayOps#ofChar.slice"
- problemName=FinalMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofShort.slice"
- problemName=FinalMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofUnit.slice"
- problemName=FinalMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofInt.slice"
- problemName=FinalMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofBoolean.slice"
- problemName=FinalMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofDouble.slice"
- problemName=FinalMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofRef.slice"
- problemName=FinalMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofByte.slice"
- problemName=FinalMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofLong.slice"
- problemName=FinalMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofFloat.slice"
- problemName=FinalMethodProblem
}
]
}
diff --git a/bincompat-forward.whitelist.conf b/bincompat-forward.whitelist.conf
index 94b2a57b25..24c372386f 100644
--- a/bincompat-forward.whitelist.conf
+++ b/bincompat-forward.whitelist.conf
@@ -56,6 +56,18 @@ filter {
problemName=DirectMissingMethodProblem
},
{
+ matchName="scala.reflect.io.FileZipArchive$LazyEntry"
+ problemName=MissingClassProblem
+ },
+ {
+ matchName="scala.reflect.io.ZipArchive.closeZipFile"
+ problemName=DirectMissingMethodProblem
+ },
+ {
+ matchName="scala.reflect.io.FileZipArchive$LeakyEntry"
+ problemName=MissingClassProblem
+ },
+ {
matchName="scala.collection.immutable.HashMap.contains0"
problemName=DirectMissingMethodProblem
},
@@ -76,351 +88,6 @@ filter {
problemName=MissingFieldProblem
},
{
- matchName="scala.collection.mutable.ArrayOps$ofChar"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofChar.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofChar.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps$ofShort"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofShort.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofShort.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofByte.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofByte.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofBoolean.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofBoolean.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofChar.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofChar.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofDouble.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofDouble.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps$ofUnit"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofUnit.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofUnit.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofInt.sliceImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofInt.emptyImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps$ofInt"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofInt.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofInt.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofRef.sliceImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofRef.emptyImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofChar.sliceImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofChar.emptyImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofUnit.sliceImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofUnit.emptyImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps$ofBoolean"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofBoolean.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofBoolean.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofShort.sliceImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofShort.emptyImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofShort.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofShort.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofRef.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofRef.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofUnit.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofUnit.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofByte.sliceImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofByte.emptyImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofDouble.sliceImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofDouble.emptyImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOpsImpl"
- problemName=MissingClassProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofInt.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofInt.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps$ofDouble"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofDouble.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofDouble.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps$ofRef"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofRef.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofRef.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofLong.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofLong.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps$ofByte"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofByte.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofByte.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofFloat.sliceImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofFloat.emptyImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofLong.sliceImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofLong.emptyImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofBoolean.sliceImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofBoolean.emptyImpl$extension"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray$ofByte"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray$ofBoolean"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray$ofChar"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray$ofDouble"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray$ofShort"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray$ofRef"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray$ofUnit"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray$ofInt"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArrayImpl"
- problemName=MissingClassProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray$ofLong"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray$ofFloat"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofFloat.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.WrappedArray#ofFloat.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps$ofLong"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofLong.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofLong.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps$ofFloat"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofFloat.sliceImpl"
- problemName=DirectMissingMethodProblem
- },
- {
- matchName="scala.collection.mutable.ArrayOps#ofFloat.emptyImpl"
- problemName=DirectMissingMethodProblem
- },
- // introduce FilteredTraversableInternal
- {
- matchName="scala.collection.immutable.Nil$"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.immutable.FilteredTraversableInternal"
- problemName=MissingClassProblem
- },
- {
- matchName="scala.collection.immutable.List"
- problemName=MissingTypesProblem
- },
- {
- matchName="scala.collection.immutable.$colon$colon"
- problemName=MissingTypesProblem
- },
- {
matchName="scala.annotation.showAsInfix$"
problemName=MissingClassProblem
},
diff --git a/build.sbt b/build.sbt
index da823d7df7..71c3ffdce6 100644
--- a/build.sbt
+++ b/build.sbt
@@ -668,7 +668,7 @@ lazy val test = project
(baseDir / "test/files/lib").list.toSeq.filter(_.endsWith(".jar.desired.sha1"))
.map(f => bootstrapDep(baseDir, "test/files/lib", f.dropRight(17)))
},
- // Two hardcoded depenencies in partest, resolved in the otherwise unused scope "test":
+ // Two hardcoded dependencies in partest, resolved in the otherwise unused scope "test":
libraryDependencies += bootstrapDep((baseDirectory in ThisBuild).value, "test/files/codelib", "code") % "test",
libraryDependencies += bootstrapDep((baseDirectory in ThisBuild).value, "test/files/speclib", "instrumented") % "test",
// no main sources
diff --git a/doc/LICENSE.md b/doc/LICENSE.md
index a07ba32e0b..2c79713f36 100644
--- a/doc/LICENSE.md
+++ b/doc/LICENSE.md
@@ -2,9 +2,9 @@ Scala is licensed under the [BSD 3-Clause License](http://opensource.org/license
## Scala License
-Copyright (c) 2002-2016 EPFL
+Copyright (c) 2002-2017 EPFL
-Copyright (c) 2011-2016 Lightbend, Inc.
+Copyright (c) 2011-2017 Lightbend, Inc.
All rights reserved.
diff --git a/doc/License.rtf b/doc/License.rtf
index 5c26d787a0..4c460e2f28 100644
--- a/doc/License.rtf
+++ b/doc/License.rtf
@@ -10,8 +10,8 @@
\fs48 Scala License
\fs40 \
-\fs26 Copyright (c) 2002-2016 EPFL\
-Copyright (c) 2011-2016 Lightbend, Inc.\
+\fs26 Copyright (c) 2002-2017 EPFL\
+Copyright (c) 2011-2017 Lightbend, Inc.\
All rights reserved.\
\
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\
diff --git a/project/MiMa.scala b/project/MiMa.scala
index fb9bb175ab..a47856b1fd 100644
--- a/project/MiMa.scala
+++ b/project/MiMa.scala
@@ -51,7 +51,7 @@ object MiMa {
"--curr", curr.getAbsolutePath,
"--filters", filter.getAbsolutePath,
"--generate-filters",
- // !!! Command line MiMa (which we call rathan the sbt Plugin for reasons alluded to in f2d0f1e85) incorrectly
+ // !!! Command line MiMa (which we call rather than the sbt Plugin for reasons alluded to in f2d0f1e85) incorrectly
// defaults to no checking (!) if this isn't specified. Fixed in https://github.com/typesafehub/migration-manager/pull/138
// TODO: Try out the new "--direction both" mode of MiMa
"--direction", "backwards"
diff --git a/project/Osgi.scala b/project/Osgi.scala
index b05751958a..f8d43d8310 100644
--- a/project/Osgi.scala
+++ b/project/Osgi.scala
@@ -50,7 +50,8 @@ object Osgi {
"Bundle-SymbolicName" -> (bundleSymbolicName.value + ".source"),
"Bundle-Version" -> versionProperties.value.osgiVersion,
"Eclipse-SourceBundle" -> (bundleSymbolicName.value + ";version=\"" + versionProperties.value.osgiVersion + "\";roots:=\".\"")
- )
+ ),
+ Keys.`package` := bundle.value
)
def bundleTask(headers: Map[String, String], jarlist: Boolean, fullClasspath: Seq[File], artifactPath: File,
diff --git a/project/PartestUtil.scala b/project/PartestUtil.scala
index 6d2c9a4c45..40031192e4 100644
--- a/project/PartestUtil.scala
+++ b/project/PartestUtil.scala
@@ -87,7 +87,7 @@ object PartestUtil {
token(grepOption <~ Space) ~> token(globOrPattern, tokenCompletion)
}
- val SrcPath = ((token(srcPathOption) <~ Space) ~ token(StringBasic.examples(Set("files", "pending", "scaladoc")))) map {
+ val SrcPath = ((token(srcPathOption) <~ Space) ~ token(StringBasic.examples(Set("files", "scaladoc")))) map {
case opt ~ path =>
srcPath = path
opt + " " + path
diff --git a/project/VersionUtil.scala b/project/VersionUtil.scala
index aacbc78329..2363708f1d 100644
--- a/project/VersionUtil.scala
+++ b/project/VersionUtil.scala
@@ -24,7 +24,7 @@ object VersionUtil {
)
lazy val generatePropertiesFileSettings = Seq[Setting[_]](
- copyrightString := "Copyright 2002-2016, LAMP/EPFL and Lightbend, Inc.",
+ copyrightString := "Copyright 2002-2017, LAMP/EPFL and Lightbend, Inc.",
resourceGenerators in Compile += generateVersionPropertiesFile.map(file => Seq(file)).taskValue,
generateVersionPropertiesFile := generateVersionPropertiesFileImpl.value
)
diff --git a/project/plugins.sbt b/project/plugins.sbt
index 58e2d6cdad..8edc76e63a 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -19,7 +19,7 @@ buildInfoKeys := Seq[BuildInfoKey](buildClasspath)
buildInfoPackage := "scalabuild"
-libraryDependencies += "com.typesafe" %% "mima-reporter" % "0.1.13"
+libraryDependencies += "com.typesafe" %% "mima-reporter" % "0.1.14"
libraryDependencies ++= Seq(
"org.eclipse.jgit" % "org.eclipse.jgit" % "4.6.0.201612231935-r",
diff --git a/scripts/jobs/integrate/bootstrap b/scripts/jobs/integrate/bootstrap
index a071f3c45f..65c8ef5551 100755
--- a/scripts/jobs/integrate/bootstrap
+++ b/scripts/jobs/integrate/bootstrap
@@ -3,7 +3,7 @@
# Script Overview
# - determine scala version
# - determine module versions
-# - build minimal core (aka locker) of Scala, use the determined version number, publish to scala-release-temp
+# - build minimal core (aka locker) of Scala, use the determined version number, publish to scala-integration
# - build those modules where a binary compatible version doesn't exist, publish to scala-integration
# - build Scala using the previously built core and bootstrap modules, publish to scala-integration
# - for releases
@@ -98,15 +98,10 @@ mkdir -p $baseDir/ivy2
rm -rf $baseDir/resolutionScratch_
mkdir -p $baseDir/resolutionScratch_
-# repo for the starr and locker builds
-releaseTempRepoUrl=${releaseTempRepoUrl-"https://scala-ci.typesafe.com/artifactory/scala-release-temp/"}
-# repo for the modules and the quick build
+# repo to publish builds
integrationRepoUrl=${integrationRepoUrl-"https://scala-ci.typesafe.com/artifactory/scala-integration/"}
-# the `releaseTempRepoUrl` needs to be in the repositories file to get starr when building quick and the modules.
-# `integrationRepoUrl` is there to find modules when building quick and other modules (e.g., partest requires xml).
-# the file is re-generated for running the stability test, this time with only `integrationRepoUrl`.
-generateRepositoriesConfig $releaseTempRepoUrl $integrationRepoUrl
+generateRepositoriesConfig $integrationRepoUrl
# ARGH trying to get this to work on multiple versions of sbt-extras...
# the old version (on jenkins, and I don't want to upgrade for risk of breaking other builds) honors -sbt-dir
@@ -413,7 +408,7 @@ bootstrap() {
git clone --reference $WORKSPACE/.git $WORKSPACE/.git $STARR_DIR
cd $STARR_DIR
git co $STARR_REF
- $SBT_CMD -no-colors $sbtArgs --warn "setupBootstrapStarr $releaseTempRepoUrl $STARR_VER" $clean publish >> $baseDir/logs/builds 2>&1
+ $SBT_CMD -no-colors $sbtArgs --warn "setupBootstrapStarr $integrationRepoUrl $STARR_VER" $clean publish >> $baseDir/logs/builds 2>&1
)
fi
@@ -427,7 +422,7 @@ bootstrap() {
# publish more than just core: partest needs scalap
# in sabbus lingo, the resulting Scala build will be used as starr to build the released Scala compiler
if [ ! -z "$STARR_VER" ]; then SET_STARR=-Dstarr.version=$STARR_VER; fi
- $SBT_CMD -no-colors $sbtArgs $SET_STARR --warn "setupBootstrapLocker $releaseTempRepoUrl $SCALA_VER" $clean publish >> $baseDir/logs/builds 2>&1
+ $SBT_CMD -no-colors $sbtArgs $SET_STARR --warn "setupBootstrapLocker $integrationRepoUrl $SCALA_VER" $clean publish >> $baseDir/logs/builds 2>&1
echo "### Building modules using locker"
@@ -530,13 +525,9 @@ determineScalaVersion
deriveModuleVersions
removeExistingBuilds $integrationRepoUrl
-removeExistingBuilds $releaseTempRepoUrl
bootstrap
-# for stability testing and sonatype publishing, use artifacts in `integrationRepoUrl`
-generateRepositoriesConfig $integrationRepoUrl
-
if [ "$testStability" == "yes" ]
then testStability
fi
diff --git a/spec/03-types.md b/spec/03-types.md
index d2f41daabf..a3167646ca 100644
--- a/spec/03-types.md
+++ b/spec/03-types.md
@@ -507,7 +507,7 @@ Assume the class definitions
```scala
class Ref[T]
-abstract class Outer { type T } .
+abstract class Outer { type T }
```
Here are some examples of existential types:
@@ -530,7 +530,7 @@ Ref[_ <: java.lang.Number]
The type `List[List[_]]` is equivalent to the existential type
```scala
-List[List[t] forSome { type t }] .
+List[List[t] forSome { type t }]
```
###### Example
diff --git a/spec/04-basic-declarations-and-definitions.md b/spec/04-basic-declarations-and-definitions.md
index c4d3425fff..5e055228f1 100644
--- a/spec/04-basic-declarations-and-definitions.md
+++ b/spec/04-basic-declarations-and-definitions.md
@@ -91,7 +91,7 @@ expands to
```scala
case object Red extends Color
case object Green extends Color
-case object Blue extends Color .
+case object Blue extends Color
```
-->
@@ -144,7 +144,7 @@ value definition `val $p$ = $e$` is expanded as follows:
val $\$ x$ = $e$ match {case $p$ => ($x_1 , \ldots , x_n$)}
val $x_1$ = $\$ x$._1
$\ldots$
-val $x_n$ = $\$ x$._n .
+val $x_n$ = $\$ x$._n
```
Here, $\$ x$ is a fresh name.
diff --git a/spec/05-classes-and-objects.md b/spec/05-classes-and-objects.md
index 5bd520589d..ffb65979f7 100644
--- a/spec/05-classes-and-objects.md
+++ b/spec/05-classes-and-objects.md
@@ -854,9 +854,8 @@ a `val` or `var` modifier. Hence, an accessor
definition for the parameter is [generated](#class-definitions).
A case class definition of `$c$[$\mathit{tps}\,$]($\mathit{ps}_1\,$)$\ldots$($\mathit{ps}_n$)` with type
-parameters $\mathit{tps}$ and value parameters $\mathit{ps}$ implicitly
-generates an [extractor object](08-pattern-matching.html#extractor-patterns) which is
-defined as follows:
+parameters $\mathit{tps}$ and value parameters $\mathit{ps}$ implies
+the definition of a companion object, which serves as an [extractor object](08-pattern-matching.html#extractor-patterns). It has the following shape:
```scala
object $c$ {
@@ -873,11 +872,13 @@ each $\mathit{xs}\_i$ denotes the parameter names of the parameter
section $\mathit{ps}\_i$, and
$\mathit{xs}\_{11}, \ldots , \mathit{xs}\_{1k}$ denote the names of all parameters
in the first parameter section $\mathit{xs}\_1$.
-If a type parameter section is missing in the
-class, it is also missing in the `apply` and
-`unapply` methods.
-The definition of `apply` is omitted if class $c$ is
-`abstract`.
+If a type parameter section is missing in the class, it is also missing in the `apply` and `unapply` methods.
+
+If the companion object $c$ is already defined,
+the `apply` and `unapply` methods are added to the existing object.
+If the object $c$ already has a [matching](#definition-matching)
+`apply` (or `unapply`) member, no new definition is added.
+The definition of `apply` is omitted if class $c$ is `abstract`.
If the case class definition contains an empty value parameter list, the
`unapply` method returns a `Boolean` instead of an `Option` type and
@@ -890,9 +891,6 @@ def unapply[$\mathit{tps}\,$]($x$: $c$[$\mathit{tps}\,$]) = x ne null
The name of the `unapply` method is changed to `unapplySeq` if the first
parameter section $\mathit{ps}_1$ of $c$ ends in a
[repeated parameter](04-basic-declarations-and-definitions.html#repeated-parameters).
-If a companion object $c$ exists already, no new object is created,
-but the `apply` and `unapply` methods are added to the existing
-object instead.
A method named `copy` is implicitly added to every case class unless the
class already has a member (directly defined or inherited) with that name, or the
diff --git a/spec/06-expressions.md b/spec/06-expressions.md
index 581170c5f9..9e49dfa199 100644
--- a/spec/06-expressions.md
+++ b/spec/06-expressions.md
@@ -222,9 +222,14 @@ the linearization of class `D` is `{D, B, A, Root}`.
Then we have:
```scala
-(new A).superA == "Root",
- (new C).superB = "Root", (new C).superC = "B",
-(new D).superA == "Root", (new D).superB = "A", (new D).superD = "B",
+(new A).superA == "Root"
+
+(new C).superB == "Root"
+(new C).superC == "B"
+
+(new D).superA == "Root"
+(new D).superB == "A"
+(new D).superD == "B"
```
Note that the `superB` function returns different results
@@ -455,7 +460,7 @@ $e$.
Type applications can be omitted if
[local type inference](#local-type-inference) can infer best type parameters
-for a polymorphic functions from the types of the actual function arguments
+for a polymorphic function from the types of the actual function arguments
and the expected result type.
## Tuples
diff --git a/spec/07-implicits.md b/spec/07-implicits.md
index 662b653f71..b0c8c1da24 100644
--- a/spec/07-implicits.md
+++ b/spec/07-implicits.md
@@ -155,7 +155,7 @@ sort(yss)
The call above will be completed by passing two nested implicit arguments:
```scala
-sort(yss)(xs: List[Int] => list2ordered[Int](xs)(int2ordered)) .
+sort(yss)(xs: List[Int] => list2ordered[Int](xs)(int2ordered))
```
The possibility of passing implicit arguments to implicit arguments
@@ -218,7 +218,7 @@ which implicit arguments are searched is
```scala
List[List[Int]] => Ordered[List[List[Int]]],
-List[Int] => Ordered[List[Int]]
+List[Int] => Ordered[List[Int]],
Int => Ordered[Int]
```
@@ -290,7 +290,7 @@ or the call-by-name category).
Class `scala.Ordered[A]` contains a method
```scala
- def <= [B >: A](that: B)(implicit b2ordered: B => Ordered[B]): Boolean .
+ def <= [B >: A](that: B)(implicit b2ordered: B => Ordered[B]): Boolean
```
Assume two lists `xs` and `ys` of type `List[Int]`
diff --git a/src/compiler/scala/tools/nsc/Global.scala b/src/compiler/scala/tools/nsc/Global.scala
index 819887f959..56ad4738d9 100644
--- a/src/compiler/scala/tools/nsc/Global.scala
+++ b/src/compiler/scala/tools/nsc/Global.scala
@@ -86,6 +86,19 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
def erasurePhase: Phase = if (currentRun.isDefined) currentRun.erasurePhase else NoPhase
+ /* Override `newStubSymbol` defined in `SymbolTable` to provide us access
+ * to the last tree to typer, whose position is the trigger of stub errors. */
+ override def newStubSymbol(owner: Symbol,
+ name: Name,
+ missingMessage: String): Symbol = {
+ val stubSymbol = super.newStubSymbol(owner, name, missingMessage)
+ val stubErrorPosition = {
+ val lastTreeToTyper = analyzer.lastTreeToTyper
+ if (lastTreeToTyper != EmptyTree) lastTreeToTyper.pos else stubSymbol.pos
+ }
+ stubSymbol.setPos(stubErrorPosition)
+ }
+
// platform specific elements
protected class GlobalPlatform extends {
diff --git a/src/compiler/scala/tools/nsc/ast/TreeGen.scala b/src/compiler/scala/tools/nsc/ast/TreeGen.scala
index a2c37b59fb..b073cb828c 100644
--- a/src/compiler/scala/tools/nsc/ast/TreeGen.scala
+++ b/src/compiler/scala/tools/nsc/ast/TreeGen.scala
@@ -300,7 +300,7 @@ abstract class TreeGen extends scala.reflect.internal.TreeGen with TreeDSL {
resTp: Type = functionResultType(fun.tpe),
additionalFlags: FlagSet = NoFlags): DefDef = {
val methSym = owner.newMethod(name, fun.pos, FINAL | additionalFlags)
- // for sams, methParamProtos is the parameter symbols for the sam's method, so that we generate the correct override (based on parmeter types)
+ // for sams, methParamProtos is the parameter symbols for the sam's method, so that we generate the correct override (based on parameter types)
val methParamSyms = methParamProtos.map { param => methSym.newSyntheticValueParam(param.tpe, param.name.toTermName) }
methSym setInfo MethodType(methParamSyms, resTp)
diff --git a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
index 01a083018c..707fe15f91 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
@@ -234,7 +234,7 @@ self =>
else currentRun.parsing.incompleteInputError(o2p(offset), msg)
}
- /** parse unit. If there are inbalanced braces,
+ /** parse unit. If there are unbalanced braces,
* try to correct them and reparse.
*/
def smartParse(): Tree = withSmartParsing {
@@ -812,7 +812,7 @@ self =>
false
} else true
- /** Strip the artifitial `Parens` node to create a tuple term Tree. */
+ /** Strip the artificial `Parens` node to create a tuple term Tree. */
def stripParens(t: Tree) = t match {
case Parens(ts) => atPos(t.pos) { makeSafeTupleTerm(ts, t.pos.point) }
case _ => t
diff --git a/src/compiler/scala/tools/nsc/ast/parser/Scanners.scala b/src/compiler/scala/tools/nsc/ast/parser/Scanners.scala
index 3ed1570c1c..0618f5d06e 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/Scanners.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/Scanners.scala
@@ -1254,7 +1254,7 @@ trait Scanners extends ScannersCommon {
class MalformedInput(val offset: Offset, val msg: String) extends Exception
/** A scanner for a given source file not necessarily attached to a compilation unit.
- * Useful for looking inside source files that aren not currently compiled to see what's there
+ * Useful for looking inside source files that are not currently compiled to see what's there
*/
class SourceFileScanner(val source: SourceFile) extends Scanner {
val buf = source.content
diff --git a/src/compiler/scala/tools/nsc/settings/MutableSettings.scala b/src/compiler/scala/tools/nsc/settings/MutableSettings.scala
index 92a5cbdd73..40aabb0df1 100644
--- a/src/compiler/scala/tools/nsc/settings/MutableSettings.scala
+++ b/src/compiler/scala/tools/nsc/settings/MutableSettings.scala
@@ -261,8 +261,8 @@ class MutableSettings(val errorFn: String => Unit)
*/
private var singleOutDir: Option[AbstractFile] = None
- /** Add a destination directory for sources found under srcdir.
- * Both directories should exits.
+ /** Add a destination directory for sources found under `srcDir`.
+ * Both directories should exist.
*/
def add(srcDir: String, outDir: String): Unit = // used in ide?
add(checkDir(AbstractFile.getDirectory(srcDir), srcDir),
diff --git a/src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala b/src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala
index d3c7ba4d76..3ac283b9a4 100644
--- a/src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala
+++ b/src/compiler/scala/tools/nsc/symtab/BrowsingLoaders.scala
@@ -52,7 +52,7 @@ abstract class BrowsingLoaders extends GlobalSymbolLoaders {
}
/** Browse the top-level of given abstract file `src` and enter
- * eny encountered top-level classes and modules in `root`
+ * any encountered top-level classes and modules in `root`
*/
def browseTopLevel(root: Symbol, src: AbstractFile) {
diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala b/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala
index 9129478b41..f146419a73 100644
--- a/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala
+++ b/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala
@@ -553,6 +553,7 @@ abstract class ClassfileParser {
val name = readName()
val sym = ownerForFlags(jflags).newMethod(name.toTermName, NoPosition, sflags)
var info = pool.getType(sym, u2)
+ var removedOuterParameter = false
if (name == nme.CONSTRUCTOR)
info match {
case MethodType(params, restpe) =>
@@ -567,6 +568,7 @@ abstract class ClassfileParser {
* ClassfileParser for 1 executes, and clazz.owner is the package.
*/
assert(params.head.tpe.typeSymbol == clazz.owner || clazz.owner.hasPackageFlag, params.head.tpe.typeSymbol + ": " + clazz.owner)
+ removedOuterParameter = true
params.tail
case _ =>
params
@@ -586,7 +588,7 @@ abstract class ClassfileParser {
// parsed from SignatureATTR
sym setInfo info
propagatePackageBoundary(jflags, sym)
- parseAttributes(sym, info)
+ parseAttributes(sym, info, removedOuterParameter)
if (jflags.isVarargs)
sym modifyInfo arrayToRepeated
@@ -769,7 +771,7 @@ abstract class ClassfileParser {
GenPolyType(ownTypeParams, tpe)
} // sigToType
- def parseAttributes(sym: Symbol, symtype: Type) {
+ def parseAttributes(sym: Symbol, symtype: Type, removedOuterParameter: Boolean = false) {
def convertTo(c: Constant, pt: Type): Constant = {
if (pt.typeSymbol == BooleanClass && c.tag == IntTag)
Constant(c.value != 0)
@@ -804,16 +806,24 @@ abstract class ClassfileParser {
else devWarning(s"failure to convert $c to $symtype")
case tpnme.MethodParametersATTR =>
def readParamNames(): Unit = {
- import tools.asm.Opcodes.ACC_SYNTHETIC
+ import scala.tools.asm.Opcodes.ACC_SYNTHETIC
val paramCount = u1
var i = 0
+ if (removedOuterParameter && i < paramCount) {
+ in.skip(4)
+ i += 1
+ }
+ var remainingParams = sym.paramss.head // Java only has exactly one parameter list
while (i < paramCount) {
val name = pool.getName(u2)
val access = u2
- if ((access & ACC_SYNTHETIC) != ACC_SYNTHETIC) { // name not synthetic
- val params = sym.paramss.head // Java only has exactly one parameter list
- params(i).name = name.encode
- params(i).resetFlag(SYNTHETIC)
+ if (remainingParams.nonEmpty) {
+ val param = remainingParams.head
+ remainingParams = remainingParams.tail
+ if ((access & ACC_SYNTHETIC) != ACC_SYNTHETIC) { // name not synthetic
+ param.name = name.encode
+ param.resetFlag(SYNTHETIC)
+ }
}
i += 1
}
@@ -1051,8 +1061,11 @@ abstract class ClassfileParser {
val sflags = jflags.toScalaFlags
val owner = ownerForFlags(jflags)
val scope = getScope(jflags)
- def newStub(name: Name) =
- owner.newStubSymbol(name, s"Class file for ${entry.externalName} not found").setFlag(JAVA)
+ def newStub(name: Name) = {
+ val stub = owner.newStubSymbol(name, s"Class file for ${entry.externalName} not found")
+ stub.setPos(owner.pos)
+ stub.setFlag(JAVA)
+ }
val (innerClass, innerModule) = if (file == NoAbstractFile) {
(newStub(name.toTypeName), newStub(name.toTermName))
@@ -1174,7 +1187,11 @@ abstract class ClassfileParser {
if (enclosing == clazz) entry.scope lookup name
else lookupMemberAtTyperPhaseIfPossible(enclosing, name)
}
- def newStub = enclosing.newStubSymbol(name, s"Unable to locate class corresponding to inner class entry for $name in owner ${entry.outerName}")
+ def newStub = {
+ enclosing
+ .newStubSymbol(name, s"Unable to locate class corresponding to inner class entry for $name in owner ${entry.outerName}")
+ .setPos(enclosing.pos)
+ }
member.orElse(newStub)
}
}
diff --git a/src/compiler/scala/tools/nsc/transform/AddInterfaces.scala b/src/compiler/scala/tools/nsc/transform/AddInterfaces.scala
deleted file mode 100644
index e69de29bb2..0000000000
--- a/src/compiler/scala/tools/nsc/transform/AddInterfaces.scala
+++ /dev/null
diff --git a/src/compiler/scala/tools/nsc/transform/TailCalls.scala b/src/compiler/scala/tools/nsc/transform/TailCalls.scala
index 744b9c8a8e..9e3e8ff455 100644
--- a/src/compiler/scala/tools/nsc/transform/TailCalls.scala
+++ b/src/compiler/scala/tools/nsc/transform/TailCalls.scala
@@ -84,7 +84,7 @@ abstract class TailCalls extends Transform {
* </p>
* <p>
* Assumes: `Uncurry` has been run already, and no multiple
- * parameter lists exit.
+ * parameter lists exist.
* </p>
*/
class TailCallElimination(unit: CompilationUnit) extends Transformer {
diff --git a/src/compiler/scala/tools/nsc/typechecker/Adaptations.scala b/src/compiler/scala/tools/nsc/typechecker/Adaptations.scala
index 57de44a038..b1901c04bb 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Adaptations.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Adaptations.scala
@@ -80,7 +80,9 @@ trait Adaptations {
context.deprecationWarning(t.pos, t.symbol, adaptWarningMessage(msg), "2.11.0")
}
} else if (settings.warnAdaptedArgs)
- context.warning(t.pos, adaptWarningMessage(s"Adapting argument list by creating a ${args.size}-tuple: this may not be what you want."))
+ context.warning(t.pos, adaptWarningMessage(
+ s"Adapting argument list by creating a ${args.size}-tuple: this may not be what you want.")
+ )
// return `true` if the adaptation should be kept
!(settings.noAdaptedArgs || (args.isEmpty && settings.future))
diff --git a/src/compiler/scala/tools/nsc/typechecker/AnalyzerPlugins.scala b/src/compiler/scala/tools/nsc/typechecker/AnalyzerPlugins.scala
index 9898cfd785..e9cce95096 100644
--- a/src/compiler/scala/tools/nsc/typechecker/AnalyzerPlugins.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/AnalyzerPlugins.scala
@@ -38,7 +38,7 @@ trait AnalyzerPlugins { self: Analyzer =>
* Let analyzer plugins modify the type that has been computed for a tree.
*
* @param tpe The type inferred by the type checker, initially (for first plugin) `tree.tpe`
- * @param typer The yper that type checked `tree`
+ * @param typer The typer that type checked `tree`
* @param tree The type-checked tree
* @param mode Mode that was used for typing `tree`
* @param pt Expected type that was used for typing `tree`
diff --git a/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala b/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala
index 0910dca445..3bbc9f3a62 100644
--- a/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala
@@ -376,7 +376,7 @@ trait ContextErrors {
}
issueNormalTypeError(sel, errMsg)
// the error has to be set for the copied tree, otherwise
- // the error remains persistent acros multiple compilations
+ // the error remains persistent across multiple compilations
// and causes problems
//setError(sel)
}
diff --git a/src/compiler/scala/tools/nsc/typechecker/Contexts.scala b/src/compiler/scala/tools/nsc/typechecker/Contexts.scala
index 67168917e1..c80bdb180b 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Contexts.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Contexts.scala
@@ -437,7 +437,7 @@ trait Contexts { self: Analyzer =>
* Construct a child context. The parent and child will share the report buffer.
* Compare with `makeSilent`, in which the child has a fresh report buffer.
*
- * If `tree` is an `Import`, that import will be avaiable at the head of
+ * If `tree` is an `Import`, that import will be available at the head of
* `Context#imports`.
*/
def make(tree: Tree = tree, owner: Symbol = owner,
diff --git a/src/compiler/scala/tools/nsc/typechecker/Implicits.scala b/src/compiler/scala/tools/nsc/typechecker/Implicits.scala
index bee2ae8e99..66ed0902d8 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Implicits.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Implicits.scala
@@ -154,11 +154,6 @@ trait Implicits {
private val improvesCache = perRunCaches.newMap[(ImplicitInfo, ImplicitInfo), Boolean]()
private val implicitSearchId = { var id = 1 ; () => try id finally id += 1 }
- private def isInvalidConversionSource(tpe: Type): Boolean = tpe match {
- case Function1(in, _) => in <:< NullClass.tpe
- case _ => false
- }
-
def resetImplicits() {
implicitsCache.clear()
infoMapCache.clear()
@@ -166,7 +161,7 @@ trait Implicits {
}
/* Map a polytype to one in which all type parameters and argument-dependent types are replaced by wildcards.
- * Consider `implicit def b(implicit x: A): x.T = error("")`. We need to approximate debruijn index types
+ * Consider `implicit def b(implicit x: A): x.T = error("")`. We need to approximate de Bruijn index types
* when checking whether `b` is a valid implicit, as we haven't even searched a value for the implicit arg `x`,
* so we have to approximate (otherwise it is excluded a priori).
*/
@@ -255,7 +250,10 @@ trait Implicits {
this.sym == that.sym
case _ => false
}
- override def hashCode = name.## + pre.## + sym.##
+ override def hashCode = {
+ import scala.util.hashing.MurmurHash3._
+ finalizeHash(mix(mix(productSeed, name.##), sym.##), 2)
+ }
override def toString = (
if (tpeCache eq null) name + ": ?"
else name + ": " + tpe
@@ -360,8 +358,8 @@ trait Implicits {
val undetParams = if (isView) Nil else context.outer.undetparams
val wildPt = approximate(pt)
- private val runDefintions = currentRun.runDefinitions
- import runDefintions._
+ private val stableRunDefsForImport = currentRun.runDefinitions
+ import stableRunDefsForImport._
def undet_s = if (undetParams.isEmpty) "" else undetParams.mkString(" inferring ", ", ", "")
def tree_s = typeDebug ptTree tree
@@ -1409,27 +1407,32 @@ trait Implicits {
}
}
if (result.isSuccess && isView) {
- def maybeInvalidConversionError(msg: String) {
+ def maybeInvalidConversionError(msg: String): Boolean = {
// We have to check context.ambiguousErrors even though we are calling "issueAmbiguousError"
// which ostensibly does exactly that before issuing the error. Why? I have no idea. Test is pos/t7690.
// AM: I would guess it's because ambiguous errors will be buffered in silent mode if they are not reported
if (context.ambiguousErrors)
context.issueAmbiguousError(AmbiguousImplicitTypeError(tree, msg))
+ true
}
pt match {
- case Function1(_, out) =>
- // must inline to avoid capturing result
- def prohibit(sym: Symbol) = (sym.tpe <:< out) && {
- maybeInvalidConversionError(s"the result type of an implicit conversion must be more specific than ${sym.name}")
- true
- }
- if (prohibit(AnyRefClass) || (settings.isScala211 && prohibit(AnyValClass)))
- result = SearchFailure
- case _ => false
- }
- if (settings.isScala211 && isInvalidConversionSource(pt)) {
- maybeInvalidConversionError("an expression of type Null is ineligible for implicit conversion")
- result = SearchFailure
+ // SI-10206 don't use subtyping to rule out AnyRef/AnyVal:
+ // - there are several valid structural types that are supertypes of AnyRef (e.g., created by HasMember);
+ // typeSymbol will do the trick (AnyRef is a type alias for Object), while ruling out these structural types
+ // - also don't want to accidentally constrain type vars through using <:<
+ case Function1(in, out) =>
+ val outSym = out.typeSymbol
+
+ val fail =
+ if (out.annotations.isEmpty && (outSym == ObjectClass || (isScala211 && outSym == AnyValClass)))
+ maybeInvalidConversionError(s"the result type of an implicit conversion must be more specific than $out")
+ else if (isScala211 && in.annotations.isEmpty && in.typeSymbol == NullClass)
+ maybeInvalidConversionError("an expression of type Null is ineligible for implicit conversion")
+ else false
+
+ if (fail) result = SearchFailure
+
+ case _ =>
}
}
@@ -1439,6 +1442,9 @@ trait Implicits {
result
}
+ // this setting is expensive to check, actually....
+ private[this] val isScala211 = settings.isScala211
+
def allImplicits: List[SearchResult] = {
def search(iss: Infoss, isLocalToCallsite: Boolean) = applicableInfos(iss, isLocalToCallsite).values
(
diff --git a/src/compiler/scala/tools/nsc/typechecker/Macros.scala b/src/compiler/scala/tools/nsc/typechecker/Macros.scala
index d7c53ed3c4..6de95ab658 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Macros.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Macros.scala
@@ -697,7 +697,7 @@ trait Macros extends MacroRuntimes with Traces with Helpers {
// foo(Foo(23, "foo", true))
//
// In the snippet above, even though we know that there's a fundep going from T to U
- // (in a sense that a datatype's uniform representation is unambiguously determined by the datatype,
+ // (in a sense that a datatype's uniform representation is unambiguously determined by the data type,
// e.g. for Foo it will be Int :: String :: Boolean :: HNil), there's no way to convey this information
// to the typechecker. Therefore the typechecker will infer Nothing for L, which is hardly what we want.
//
diff --git a/src/compiler/scala/tools/nsc/typechecker/MethodSynthesis.scala b/src/compiler/scala/tools/nsc/typechecker/MethodSynthesis.scala
index 0f257d3717..72d186b301 100644
--- a/src/compiler/scala/tools/nsc/typechecker/MethodSynthesis.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/MethodSynthesis.scala
@@ -146,8 +146,8 @@ trait MethodSynthesis {
// if there's no field symbol, the ValDef tree receives the getter symbol and thus is not a synthetic
if (fieldSym != NoSymbol) {
context.unit.synthetics(getterSym) = getter.derivedTree(getterSym)
- getterSym setInfo namer.accessorTypeCompleter(tree, tree.tpt.isEmpty, isBean = false, isSetter = false)
- } else getterSym setInfo namer.valTypeCompleter(tree)
+ getterSym setInfo new namer.AccessorTypeCompleter(tree, tree.tpt.isEmpty, isBean = false, isSetter = false)
+ } else getterSym setInfo new namer.ValTypeCompleter(tree)
enterInScope(getterSym)
@@ -155,17 +155,17 @@ trait MethodSynthesis {
val setter = Setter(tree)
val setterSym = setter.createSym
context.unit.synthetics(setterSym) = setter.derivedTree(setterSym)
- setterSym setInfo namer.accessorTypeCompleter(tree, tree.tpt.isEmpty, isBean = false, isSetter = true)
+ setterSym setInfo new namer.AccessorTypeCompleter(tree, tree.tpt.isEmpty, isBean = false, isSetter = true)
enterInScope(setterSym)
}
// TODO: delay emitting the field to the fields phase (except for private[this] vals, which only get a field and no accessors)
if (fieldSym != NoSymbol) {
- fieldSym setInfo namer.valTypeCompleter(tree)
+ fieldSym setInfo new namer.ValTypeCompleter(tree)
enterInScope(fieldSym)
}
} else {
- getterSym setInfo namer.valTypeCompleter(tree)
+ getterSym setInfo new namer.ValTypeCompleter(tree)
enterInScope(getterSym)
}
@@ -208,11 +208,11 @@ trait MethodSynthesis {
sym
}
- val getterCompleter = namer.accessorTypeCompleter(tree, missingTpt, isBean = true, isSetter = false)
+ val getterCompleter = new namer.AccessorTypeCompleter(tree, missingTpt, isBean = true, isSetter = false)
enterInScope(deriveBeanAccessor(if (hasBeanProperty) "get" else "is") setInfo getterCompleter)
if (tree.mods.isMutable) {
- val setterCompleter = namer.accessorTypeCompleter(tree, missingTpt, isBean = true, isSetter = true)
+ val setterCompleter = new namer.AccessorTypeCompleter(tree, missingTpt, isBean = true, isSetter = true)
enterInScope(deriveBeanAccessor("set") setInfo setterCompleter)
}
}
@@ -221,9 +221,9 @@ trait MethodSynthesis {
def enterImplicitWrapper(classDef: ClassDef): Unit = {
val methDef = factoryMeth(classDef.mods & AccessFlags | METHOD | IMPLICIT | SYNTHETIC, classDef.name.toTermName, classDef)
- val methSym = assignAndEnterSymbol(methDef)
+ val methSym = enterInScope(assignMemberSymbol(methDef))
context.unit.synthetics(methSym) = methDef
- methSym setInfo implicitFactoryMethodCompleter(methDef, classDef.symbol, completerOf(methDef).asInstanceOf[LockingTypeCompleter])
+ methSym setInfo implicitFactoryMethodCompleter(methDef, classDef.symbol)
}
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
index 28169c9da1..fee56cfc13 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
@@ -103,14 +103,10 @@ trait Namers extends MethodSynthesis {
else newNamer(cx)
}
- def enterValueParams(vparamss: List[List[ValDef]]): List[List[Symbol]] = {
+ def enterValueParams(vparamss: List[List[ValDef]]): List[List[Symbol]] =
mmap(vparamss) { param =>
- val sym = assignSymbol(param, param.name, mask = ValueParameterFlags)
- setPrivateWithin(param, sym)
- enterInScope(sym)
- sym setInfo monoTypeCompleter(param)
+ enterInScope(assignMemberSymbol(param, mask = ValueParameterFlags)) setInfo new MonoTypeCompleter(param)
}
- }
protected def owner = context.owner
def contextFile = context.unit.source.file
@@ -286,9 +282,7 @@ trait Namers extends MethodSynthesis {
case tree @ DefDef(_, _, _, _, _, _) => enterDefDef(tree)
case tree @ TypeDef(_, _, _, _) => enterTypeDef(tree)
case DocDef(_, defn) => enterSym(defn)
- case tree @ Import(_, _) =>
- assignSymbol(tree)
- returnContext = context.make(tree)
+ case tree @ Import(_, _) => enterImport(tree); returnContext = context.make(tree)
case _ =>
}
returnContext
@@ -299,25 +293,15 @@ trait Namers extends MethodSynthesis {
}
}
- /** Creates a new symbol and assigns it to the tree, returning the symbol
- */
- def assignSymbol(tree: Tree): Symbol =
- logAssignSymbol(tree, tree match {
- case PackageDef(pid, _) => createPackageSymbol(tree.pos, pid)
- case imp: Import => createImportSymbol(imp)
- case mdef: MemberDef => createMemberSymbol(mdef, mdef.name, -1L)
- case _ => abort("Unexpected tree: " + tree)
- })
- def assignSymbol(tree: MemberDef, name: Name, mask: Long): Symbol =
- logAssignSymbol(tree, createMemberSymbol(tree, name, mask))
-
- def assignAndEnterSymbol(tree: MemberDef): Symbol = {
- val sym = assignSymbol(tree, tree.name, -1L)
+ def assignMemberSymbol(tree: MemberDef, mask: Long = -1L): Symbol = {
+ val sym = createMemberSymbol(tree, tree.name, mask)
setPrivateWithin(tree, sym)
- enterInScope(sym)
+ tree.symbol = sym
+ sym
}
+
def assignAndEnterFinishedSymbol(tree: MemberDef): Symbol = {
- val sym = assignAndEnterSymbol(tree)
+ val sym = enterInScope(assignMemberSymbol(tree))
sym setInfo completerOf(tree)
// log("[+info] " + sym.fullLocationString)
sym
@@ -329,19 +313,6 @@ trait Namers extends MethodSynthesis {
sym
}
- private def logAssignSymbol(tree: Tree, sym: Symbol): Symbol = {
- if (isPastTyper) sym.name.toTermName match {
- case nme.IMPORT | nme.OUTER | nme.ANON_CLASS_NAME | nme.ANON_FUN_NAME | nme.CONSTRUCTOR => ()
- case _ =>
- tree match {
- case md: DefDef => log("[+symbol] " + sym.debugLocationString)
- case _ =>
- }
- }
- tree.symbol = sym
- sym
- }
-
/** Create a new symbol at the context owner based on the given tree.
* A different name can be given. If the modifier flags should not be
* be transferred to the symbol as they are, supply a mask containing
@@ -366,8 +337,10 @@ trait Namers extends MethodSynthesis {
}
}
- def createImportSymbol(tree: Import) =
- NoSymbol.newImport(tree.pos) setInfo (namerOf(tree.symbol) importTypeCompleter tree)
+ def createImportSymbol(tree: Import) = {
+ val importNamer = namerOf(tree.symbol)
+ NoSymbol.newImport(tree.pos) setInfo new importNamer.ImportTypeCompleter(tree)
+ }
/** All PackageClassInfoTypes come from here. */
def createPackageSymbol(pos: Position, pid: RefTree): Symbol = {
@@ -419,7 +392,7 @@ trait Namers extends MethodSynthesis {
clearRenamedCaseAccessors(existing)
existing
}
- else assignAndEnterSymbol(tree) setFlag inConstructorFlag
+ else enterInScope(assignMemberSymbol(tree)) setFlag inConstructorFlag
}
clazz match {
case csym: ClassSymbol if csym.isTopLevel => enterClassSymbol(tree, csym)
@@ -457,7 +430,8 @@ trait Namers extends MethodSynthesis {
def enterModuleDef(tree: ModuleDef) = {
val sym = enterModuleSymbol(tree)
- sym.moduleClass setInfo namerOf(sym).moduleClassTypeCompleter(tree)
+ val mcsNamer = namerOf(sym)
+ sym.moduleClass setInfo new mcsNamer.ModuleClassTypeCompleter(tree)
sym setInfo completerOf(tree)
validateCompanionDefs(tree)
sym
@@ -466,9 +440,10 @@ trait Namers extends MethodSynthesis {
/** Enter a module symbol.
*/
def enterModuleSymbol(tree : ModuleDef): Symbol = {
- var m: Symbol = context.scope lookupModule tree.name
val moduleFlags = tree.mods.flags | MODULE
- if (m.isModule && !m.hasPackageFlag && inCurrentScope(m) && (currentRun.canRedefine(m) || m.isSynthetic)) {
+
+ val existingModule = context.scope lookupModule tree.name
+ if (existingModule.isModule && !existingModule.hasPackageFlag && inCurrentScope(existingModule) && (currentRun.canRedefine(existingModule) || existingModule.isSynthetic)) {
// This code accounts for the way the package objects found in the classpath are opened up
// early by the completer of the package itself. If the `packageobjects` phase then finds
// the same package object in sources, we have to clean the slate and remove package object
@@ -476,21 +451,24 @@ trait Namers extends MethodSynthesis {
//
// TODO SI-4695 Pursue the approach in https://github.com/scala/scala/pull/2789 that avoids
// opening up the package object on the classpath at all if one exists in source.
- if (m.isPackageObject) {
- val packageScope = m.enclosingPackageClass.rawInfo.decls
- packageScope.foreach(mem => if (mem.owner != m.enclosingPackageClass) packageScope unlink mem)
+ if (existingModule.isPackageObject) {
+ val packageScope = existingModule.enclosingPackageClass.rawInfo.decls
+ packageScope.foreach(mem => if (mem.owner != existingModule.enclosingPackageClass) packageScope unlink mem)
}
- updatePosFlags(m, tree.pos, moduleFlags)
- setPrivateWithin(tree, m)
- m.moduleClass andAlso (setPrivateWithin(tree, _))
- context.unit.synthetics -= m
- tree.symbol = m
+ updatePosFlags(existingModule, tree.pos, moduleFlags)
+ setPrivateWithin(tree, existingModule)
+ existingModule.moduleClass andAlso (setPrivateWithin(tree, _))
+ context.unit.synthetics -= existingModule
+ tree.symbol = existingModule
}
else {
- m = assignAndEnterSymbol(tree)
+ enterInScope(assignMemberSymbol(tree))
+ val m = tree.symbol
m.moduleClass setFlag moduleClassFlags(moduleFlags)
setPrivateWithin(tree, m.moduleClass)
}
+
+ val m = tree.symbol
if (m.isTopLevel && !m.hasPackageFlag) {
m.moduleClass.associatedFile = contextFile
currentRun.symSource(m) = m.moduleClass.sourceFile
@@ -613,13 +591,11 @@ trait Namers extends MethodSynthesis {
noDuplicates(selectors map (_.rename), AppearsTwice)
}
- def enterCopyMethod(copyDef: DefDef): Symbol = {
- val sym = copyDef.symbol
- val lazyType = completerOf(copyDef)
-
+ def copyMethodCompleter(copyDef: DefDef): TypeCompleter = {
/* Assign the types of the class parameters to the parameters of the
- * copy method. See comment in `Unapplies.caseClassCopyMeth` */
- def assignParamTypes() {
+ * copy method. See comment in `Unapplies.caseClassCopyMeth`
+ */
+ def assignParamTypes(copyDef: DefDef, sym: Symbol) {
val clazz = sym.owner
val constructorType = clazz.primaryConstructor.tpe
val subst = new SubstSymMap(clazz.typeParams, copyDef.tparams map (_.symbol))
@@ -632,16 +608,84 @@ trait Namers extends MethodSynthesis {
)
}
- sym setInfo {
- mkTypeCompleter(copyDef) { sym =>
- assignParamTypes()
- lazyType complete sym
+ new CompleterWrapper(completerOf(copyDef)) {
+ override def complete(sym: Symbol): Unit = {
+ assignParamTypes(tree.asInstanceOf[DefDef], sym)
+ super.complete(sym)
}
}
}
+ // for apply/unapply, which may need to disappear when they clash with a user-defined method of matching signature
+ def applyUnapplyMethodCompleter(un_applyDef: DefDef, companionContext: Context): TypeCompleter =
+ new CompleterWrapper(completerOf(un_applyDef)) {
+ override def complete(sym: Symbol): Unit = {
+ assert(sym hasAllFlags CASE | SYNTHETIC, sym.defString)
+
+ super.complete(sym)
+
+ // don't propagate e.g. @volatile annot to apply's argument
+ def retainOnlyParamAnnots(param: Symbol) =
+ param setAnnotations (param.annotations filter AnnotationInfo.mkFilter(ParamTargetClass, defaultRetention = false))
+
+ sym.info.paramss.foreach(_.foreach(retainOnlyParamAnnots))
+
+ // owner won't be locked
+ val ownerInfo = companionContext.owner.info
+
+ // If there's a same-named locked symbol, we're currently completing its signature.
+ // If `scopePartiallyCompleted`, the program is known to have a type error, since
+ // this means a user-defined method is missing a result type while its rhs refers to `sym` or an overload.
+ // This is an error because overloaded/recursive methods must have a result type.
+ // The method would be overloaded if its signature, once completed, would not match the synthetic method's,
+ // or recursive if it turned out we should unlink our synthetic method (matching sig).
+ // In any case, error out. We don't unlink the symbol so that `symWasOverloaded` says yes,
+ // which would be wrong if the method is in fact recursive, but it seems less confusing.
+ val scopePartiallyCompleted = new HasMember(ownerInfo, sym.name, BridgeFlags | SYNTHETIC, LOCKED).apply()
+
+ // Check `scopePartiallyCompleted` first to rule out locked symbols from the owner.info.member call,
+ // as FindMember will call info on a locked symbol (while checking type matching to assemble an overloaded type),
+ // and throw a TypeError, so that we are aborted.
+ // Do not consider deferred symbols, as suppressing our concrete implementation would be an error regardless
+ // of whether the signature matches (if it matches, we omitted a valid implementation, if it doesn't,
+ // we would get an error for the missing implementation it isn't implemented by some overload other than our synthetic one)
+ val suppress = scopePartiallyCompleted || {
+ // can't exclude deferred members using DEFERRED flag here (TODO: why?)
+ val userDefined = ownerInfo.memberBasedOnName(sym.name, BridgeFlags | SYNTHETIC)
+
+ (userDefined != NoSymbol) && {
+ assert(userDefined != sym)
+ val alts = userDefined.alternatives // could be just the one, if this member isn't overloaded
+ // don't compute any further `memberInfo`s if there's an error somewhere
+ alts.exists(_.isErroneous) || {
+ val self = companionContext.owner.thisType
+ val memberInfo = self.memberInfo(sym)
+ alts.exists(alt => !alt.isDeferred && (self.memberInfo(alt) matches memberInfo))
+ }
+ }
+ }
+
+ if (suppress) {
+ sym setInfo ErrorType
+ sym setFlag IS_ERROR
+
+ // Don't unlink in an error situation to generate less confusing error messages.
+ // Ideally, our error reporting would distinguish overloaded from recursive user-defined apply methods without signature,
+ // but this would require some form of partial-completion of method signatures, so that we can
+ // know what the argument types were, even though we can't complete the result type, because
+ // we hit a cycle while trying to compute it (when we get here with locked user-defined symbols, we
+ // are in the complete for that symbol, and thus the locked symbol has not yet received enough info;
+ // I hesitate to provide more info, because it would involve a WildCard or something for its result type,
+ // which could upset other code paths)
+ if (!scopePartiallyCompleted)
+ companionContext.scope.unlink(sym)
+ }
+ }
+ }
+
def completerOf(tree: MemberDef): TypeCompleter = {
- val mono = namerOf(tree.symbol) monoTypeCompleter tree
+ val treeNamer = namerOf(tree.symbol)
+ val mono = new treeNamer.MonoTypeCompleter(tree)
val tparams = treeInfo.typeParameters(tree)
if (tparams.isEmpty) mono
else {
@@ -675,25 +719,34 @@ trait Namers extends MethodSynthesis {
}
def enterPackage(tree: PackageDef) {
- val sym = assignSymbol(tree)
+ val sym = createPackageSymbol(tree.pos, tree.pid)
+ tree.symbol = sym
newNamer(context.make(tree, sym.moduleClass, sym.info.decls)) enterSyms tree.stats
}
+
+ private def enterImport(tree: Import) = {
+ val sym = createImportSymbol(tree)
+ tree.symbol = sym
+ }
+
def enterTypeDef(tree: TypeDef) = assignAndEnterFinishedSymbol(tree)
def enterDefDef(tree: DefDef): Unit = tree match {
case DefDef(_, nme.CONSTRUCTOR, _, _, _, _) =>
assignAndEnterFinishedSymbol(tree)
- case DefDef(mods, name, tparams, _, _, _) =>
+ case DefDef(mods, name, _, _, _, _) =>
val bridgeFlag = if (mods hasAnnotationNamed tpnme.bridgeAnnot) BRIDGE | ARTIFACT else 0
- val sym = assignAndEnterSymbol(tree) setFlag bridgeFlag
+ val sym = enterInScope(assignMemberSymbol(tree)) setFlag bridgeFlag
- if (name == nme.copy && sym.isSynthetic)
- enterCopyMethod(tree)
- else if (name == nme.apply && sym.hasAllFlags(SYNTHETIC | CASE))
- sym setInfo caseApplyMethodCompleter(tree, completerOf(tree).asInstanceOf[LockingTypeCompleter])
- else
- sym setInfo completerOf(tree)
- }
+ val completer =
+ if (sym hasFlag SYNTHETIC) {
+ if (name == nme.copy) copyMethodCompleter(tree)
+ else if (sym hasFlag CASE) applyUnapplyMethodCompleter(tree, context)
+ else completerOf(tree)
+ } else completerOf(tree)
+
+ sym setInfo completer
+ }
def enterClassDef(tree: ClassDef) {
val ClassDef(mods, _, _, impl) = tree
@@ -762,125 +815,129 @@ trait Namers extends MethodSynthesis {
NoSymbol
}
- def monoTypeCompleter(tree: MemberDef) = mkTypeCompleter(tree) { sym =>
- // this early test is there to avoid infinite baseTypes when
- // adding setters and getters --> bug798
- // It is a def in an attempt to provide some insulation against
- // uninitialized symbols misleading us. It is not a certainty
- // this accomplishes anything, but performance is a non-consideration
- // on these flag checks so it can't hurt.
- def needsCycleCheck = sym.isNonClassType && !sym.isParameter && !sym.isExistential
-
- val annotations = annotSig(tree.mods.annotations)
+ def monoTypeCompleter(tree: MemberDef) = new MonoTypeCompleter(tree)
+ class MonoTypeCompleter(tree: MemberDef) extends TypeCompleterBase(tree) {
+ override def completeImpl(sym: Symbol): Unit = {
+ // this early test is there to avoid infinite baseTypes when
+ // adding setters and getters --> bug798
+ // It is a def in an attempt to provide some insulation against
+ // uninitialized symbols misleading us. It is not a certainty
+ // this accomplishes anything, but performance is a non-consideration
+ // on these flag checks so it can't hurt.
+ def needsCycleCheck = sym.isNonClassType && !sym.isParameter && !sym.isExistential
+
+ val annotations = annotSig(tree.mods.annotations)
+
+ val tp = typeSig(tree, annotations)
+
+ findCyclicalLowerBound(tp) andAlso { sym =>
+ if (needsCycleCheck) {
+ // neg/t1224: trait C[T] ; trait A { type T >: C[T] <: C[C[T]] }
+ // To avoid an infinite loop on the above, we cannot break all cycles
+ log(s"Reinitializing info of $sym to catch any genuine cycles")
+ sym reset sym.info
+ sym.initialize
+ }
+ }
- val tp = typeSig(tree, annotations)
+ sym.setInfo(if (!sym.isJavaDefined) tp else RestrictJavaArraysMap(tp))
- findCyclicalLowerBound(tp) andAlso { sym =>
if (needsCycleCheck) {
- // neg/t1224: trait C[T] ; trait A { type T >: C[T] <: C[C[T]] }
- // To avoid an infinite loop on the above, we cannot break all cycles
- log(s"Reinitializing info of $sym to catch any genuine cycles")
- sym reset sym.info
- sym.initialize
+ log(s"Needs cycle check: ${sym.debugLocationString}")
+ if (!typer.checkNonCyclic(tree.pos, tp))
+ sym setInfo ErrorType
}
- }
- sym.setInfo(if (!sym.isJavaDefined) tp else RestrictJavaArraysMap(tp))
-
- if (needsCycleCheck) {
- log(s"Needs cycle check: ${sym.debugLocationString}")
- if (!typer.checkNonCyclic(tree.pos, tp))
- sym setInfo ErrorType
+ validate(sym)
}
-
- validate(sym)
}
- def moduleClassTypeCompleter(tree: ModuleDef) = mkTypeCompleter(tree) { sym =>
- val moduleSymbol = tree.symbol
- assert(moduleSymbol.moduleClass == sym, moduleSymbol.moduleClass)
- moduleSymbol.info // sets moduleClass info as a side effect.
+ def moduleClassTypeCompleter(tree: ModuleDef) = new ModuleClassTypeCompleter(tree)
+ class ModuleClassTypeCompleter(tree: ModuleDef) extends TypeCompleterBase(tree) {
+ override def completeImpl(sym: Symbol): Unit = {
+ val moduleSymbol = tree.symbol
+ assert(moduleSymbol.moduleClass == sym, moduleSymbol.moduleClass)
+ moduleSymbol.info // sets moduleClass info as a side effect.
+ }
}
-
- def importTypeCompleter(imp: Import) = mkTypeCompleter(imp) { sym =>
- sym setInfo importSig(imp)
+ def importTypeCompleter(tree: Import) = new ImportTypeCompleter(tree)
+ class ImportTypeCompleter(imp: Import) extends TypeCompleterBase(imp) {
+ override def completeImpl(sym: Symbol): Unit = {
+ sym setInfo importSig(imp)
+ }
}
import AnnotationInfo.{mkFilter => annotationFilter}
- def implicitFactoryMethodCompleter(tree: DefDef, classSym: Symbol, sigCompleter: LockingTypeCompleter) = mkTypeCompleter(tree) { methSym =>
- sigCompleter.completeImpl(methSym)
-
- val annotations = classSym.initialize.annotations
-
- methSym setAnnotations (annotations filter annotationFilter(MethodTargetClass, defaultRetention = false))
- classSym setAnnotations (annotations filter annotationFilter(ClassTargetClass, defaultRetention = true))
- }
-
- def caseApplyMethodCompleter(tree: DefDef, sigCompleter: LockingTypeCompleter) = mkTypeCompleter(tree) { methSym =>
- sigCompleter.completeImpl(methSym)
+ def implicitFactoryMethodCompleter(tree: DefDef, classSym: Symbol) = new CompleterWrapper(completerOf(tree)) {
+ override def complete(methSym: Symbol): Unit = {
+ super.complete(methSym)
+ val annotations = classSym.initialize.annotations
- // don't propagate e.g. @volatile annot to apply's argument
- def retainOnlyParamAnnots(param: Symbol) =
- param setAnnotations (param.annotations filter AnnotationInfo.mkFilter(ParamTargetClass, defaultRetention = false))
-
- methSym.info.paramss.foreach(_.foreach(retainOnlyParamAnnots))
+ methSym setAnnotations (annotations filter annotationFilter(MethodTargetClass, defaultRetention = false))
+ classSym setAnnotations (annotations filter annotationFilter(ClassTargetClass, defaultRetention = true))
+ }
}
// complete the type of a value definition (may have a method symbol, for those valdefs that never receive a field,
// as specified by Field.noFieldFor)
- def valTypeCompleter(tree: ValDef) = mkTypeCompleter(tree) { fieldOrGetterSym =>
- val mods = tree.mods
- val isGetter = fieldOrGetterSym.isMethod
- val annots =
- if (mods.annotations.isEmpty) Nil
- else {
- val annotSigs = annotSig(mods.annotations)
+ def valTypeCompleter(tree: ValDef) = new ValTypeCompleter(tree)
+ class ValTypeCompleter(tree: ValDef) extends TypeCompleterBase(tree) {
+ override def completeImpl(fieldOrGetterSym: Symbol): Unit = {
+ val mods = tree.mods
+ val isGetter = fieldOrGetterSym.isMethod
+ val annots =
+ if (mods.annotations.isEmpty) Nil
+ else {
+ val annotSigs = annotSig(mods.annotations)
if (isGetter) filterAccessorAnnots(annotSigs, tree) // if this is really a getter, retain annots targeting either field/getter
else annotSigs filter annotationFilter(FieldTargetClass, !mods.isParamAccessor)
- }
+ }
- // must use typeSig, not memberSig (TODO: when do we need to switch namers?)
- val sig = typeSig(tree, annots)
+ // must use typeSig, not memberSig (TODO: when do we need to switch namers?)
+ val sig = typeSig(tree, annots)
- fieldOrGetterSym setInfo (if (isGetter) NullaryMethodType(sig) else sig)
+ fieldOrGetterSym setInfo (if (isGetter) NullaryMethodType(sig) else sig)
- validate(fieldOrGetterSym)
+ validate(fieldOrGetterSym)
+ }
}
// knowing `isBean`, we could derive `isSetter` from `valDef.name`
- def accessorTypeCompleter(valDef: ValDef, missingTpt: Boolean, isBean: Boolean, isSetter: Boolean) = mkTypeCompleter(valDef) { accessorSym =>
- context.unit.synthetics get accessorSym match {
- case Some(ddef: DefDef) =>
- // `accessorSym` is the accessor for which we're completing the info (tree == ddef),
- // while `valDef` is the field definition that spawned the accessor
- // NOTE: `valTypeCompleter` handles abstract vals, trait vals and lazy vals, where the ValDef carries the getter's symbol
-
- // reuse work done in valTypeCompleter if we already computed the type signature of the val
- // (assuming the field and accessor symbols are distinct -- i.e., we're not in a trait)
- val valSig =
- if ((accessorSym ne valDef.symbol) && valDef.symbol.isInitialized) valDef.symbol.info
- else typeSig(valDef, Nil) // don't set annotations for the valdef -- we just want to compute the type sig (TODO: dig deeper and see if we can use memberSig)
-
- // patch up the accessor's tree if the valdef's tpt was not known back when the tree was synthesized
- // can't look at `valDef.tpt` here because it may have been completed by now (this is why we pass in `missingTpt`)
- // HACK: a param accessor `ddef.tpt.tpe` somehow gets out of whack with `accessorSym.info`, so always patch it back...
- // (the tpt is typed in the wrong namer, using the class as owner instead of the outer context, which is where param accessors should be typed)
- if (missingTpt || accessorSym.isParamAccessor) {
- if (!isSetter) ddef.tpt setType valSig
- else if (ddef.vparamss.nonEmpty && ddef.vparamss.head.nonEmpty) ddef.vparamss.head.head.tpt setType valSig
- else throw new TypeError(valDef.pos, s"Internal error: could not complete parameter/return type for $ddef from $accessorSym")
- }
+ def accessorTypeCompleter(valDef: ValDef, missingTpt: Boolean, isBean: Boolean, isSetter: Boolean) = new AccessorTypeCompleter(valDef, missingTpt, isBean, isSetter)
+ class AccessorTypeCompleter(valDef: ValDef, missingTpt: Boolean, isBean: Boolean, isSetter: Boolean) extends TypeCompleterBase(valDef) {
+ override def completeImpl(accessorSym: Symbol): Unit = {
+ context.unit.synthetics get accessorSym match {
+ case Some(ddef: DefDef) =>
+ // `accessorSym` is the accessor for which we're completing the info (tree == ddef),
+ // while `valDef` is the field definition that spawned the accessor
+ // NOTE: `valTypeCompleter` handles abstract vals, trait vals and lazy vals, where the ValDef carries the getter's symbol
+
+ // reuse work done in valTypeCompleter if we already computed the type signature of the val
+ // (assuming the field and accessor symbols are distinct -- i.e., we're not in a trait)
+ val valSig =
+ if ((accessorSym ne valDef.symbol) && valDef.symbol.isInitialized) valDef.symbol.info
+ else typeSig(valDef, Nil) // don't set annotations for the valdef -- we just want to compute the type sig (TODO: dig deeper and see if we can use memberSig)
+
+ // patch up the accessor's tree if the valdef's tpt was not known back when the tree was synthesized
+ // can't look at `valDef.tpt` here because it may have been completed by now (this is why we pass in `missingTpt`)
+ // HACK: a param accessor `ddef.tpt.tpe` somehow gets out of whack with `accessorSym.info`, so always patch it back...
+ // (the tpt is typed in the wrong namer, using the class as owner instead of the outer context, which is where param accessors should be typed)
+ if (missingTpt || accessorSym.isParamAccessor) {
+ if (!isSetter) ddef.tpt setType valSig
+ else if (ddef.vparamss.nonEmpty && ddef.vparamss.head.nonEmpty) ddef.vparamss.head.head.tpt setType valSig
+ else throw new TypeError(valDef.pos, s"Internal error: could not complete parameter/return type for $ddef from $accessorSym")
+ }
- val mods = valDef.mods
- val annots =
- if (mods.annotations.isEmpty) Nil
- else filterAccessorAnnots(annotSig(mods.annotations), valDef, isSetter, isBean)
+ val mods = valDef.mods
+ val annots =
+ if (mods.annotations.isEmpty) Nil
+ else filterAccessorAnnots(annotSig(mods.annotations), valDef, isSetter, isBean)
- // for a setter, call memberSig to attribute the parameter (for a bean, we always use the regular method sig completer since they receive method types)
- // for a regular getter, make sure it gets a NullaryMethodType (also, no need to recompute it: we already have the valSig)
- val sig =
+ // for a setter, call memberSig to attribute the parameter (for a bean, we always use the regular method sig completer since they receive method types)
+ // for a regular getter, make sure it gets a NullaryMethodType (also, no need to recompute it: we already have the valSig)
+ val sig =
if (isSetter || isBean) typeSig(ddef, annots)
else {
if (annots.nonEmpty) annotate(accessorSym, annots)
@@ -888,16 +945,17 @@ trait Namers extends MethodSynthesis {
NullaryMethodType(valSig)
}
- accessorSym setInfo pluginsTypeSigAccessor(sig, typer, valDef, accessorSym)
+ accessorSym setInfo pluginsTypeSigAccessor(sig, typer, valDef, accessorSym)
- if (!isBean && accessorSym.isOverloaded)
- if (isSetter) ddef.rhs.setType(ErrorType)
- else GetterDefinedTwiceError(accessorSym)
+ if (!isBean && accessorSym.isOverloaded)
+ if (isSetter) ddef.rhs.setType(ErrorType)
+ else GetterDefinedTwiceError(accessorSym)
- validate(accessorSym)
+ validate(accessorSym)
- case _ =>
- throw new TypeError(valDef.pos, s"Internal error: no synthetic tree found for bean accessor $accessorSym")
+ case _ =>
+ throw new TypeError(valDef.pos, s"Internal error: no synthetic tree found for bean accessor $accessorSym")
+ }
}
}
@@ -942,11 +1000,14 @@ trait Namers extends MethodSynthesis {
}
- def selfTypeCompleter(tree: Tree) = mkTypeCompleter(tree) { sym =>
- val selftpe = typer.typedType(tree).tpe
- sym setInfo {
- if (selftpe.typeSymbol isNonBottomSubClass sym.owner) selftpe
- else intersectionType(List(sym.owner.tpe, selftpe))
+ def selfTypeCompleter(tree: Tree) = new SelfTypeCompleter(tree)
+ class SelfTypeCompleter(tree: Tree) extends TypeCompleterBase(tree) {
+ override def completeImpl(sym: Symbol): Unit = {
+ val selftpe = typer.typedType(tree).tpe
+ sym setInfo {
+ if (selftpe.typeSymbol isNonBottomSubClass sym.owner) selftpe
+ else intersectionType(List(sym.owner.tpe, selftpe))
+ }
}
}
@@ -1020,7 +1081,7 @@ trait Namers extends MethodSynthesis {
val sym = (
if (hasType || hasName) {
- owner.typeOfThis = if (hasType) selfTypeCompleter(tpt) else owner.tpe_*
+ owner.typeOfThis = if (hasType) new SelfTypeCompleter(tpt) else owner.tpe_*
val selfSym = owner.thisSym setPos self.pos
if (hasName) selfSym setName name else selfSym
}
@@ -1114,7 +1175,7 @@ trait Namers extends MethodSynthesis {
val res = GenPolyType(tparams0, resultType)
val pluginsTp = pluginsTypeSig(res, typer, cdef, WildcardType)
- // Already assign the type to the class symbol (monoTypeCompleter will do it again).
+ // Already assign the type to the class symbol (MonoTypeCompleter will do it again).
// Allows isDerivedValueClass to look at the info.
clazz setInfo pluginsTp
if (clazz.isDerivedValueClass) {
@@ -1128,7 +1189,7 @@ trait Namers extends MethodSynthesis {
private def moduleSig(mdef: ModuleDef): Type = {
val moduleSym = mdef.symbol
- // The info of both the module and the moduleClass symbols need to be assigned. monoTypeCompleter assigns
+ // The info of both the module and the moduleClass symbols need to be assigned. MonoTypeCompleter assigns
// the result of typeSig to the module symbol. The module class info is assigned here as a side-effect.
val result = templateSig(mdef.impl)
val pluginsTp = pluginsTypeSig(result, typer, mdef, WildcardType)
@@ -1348,7 +1409,7 @@ trait Namers extends MethodSynthesis {
// Add a () parameter section if this overrides some method with () parameters
val vparamSymssOrEmptyParamsFromOverride =
- if (overridden != NoSymbol && vparamSymss.isEmpty && overridden.alternatives.exists(_.info.isInstanceOf[MethodType])) ListOfNil // NOTEL must check `.info.isInstanceOf[MethodType]`, not `.isMethod`!
+ if (overridden != NoSymbol && vparamSymss.isEmpty && overridden.alternatives.exists(_.info.isInstanceOf[MethodType])) ListOfNil // NOTE: must check `.info.isInstanceOf[MethodType]`, not `.isMethod`!
else vparamSymss
val methSig = deskolemizedPolySig(vparamSymssOrEmptyParamsFromOverride, resTp)
@@ -1464,7 +1525,7 @@ trait Namers extends MethodSynthesis {
val defTpt =
// don't mess with tpt's of case copy default getters, because assigning something other than TypeTree()
- // will break the carefully orchestrated naming/typing logic that involves enterCopyMethod and caseClassCopyMeth
+ // will break the carefully orchestrated naming/typing logic that involves copyMethodCompleter and caseClassCopyMeth
if (meth.isCaseCopy) TypeTree()
else {
// If the parameter type mentions any type parameter of the method, let the compiler infer the
@@ -1528,7 +1589,7 @@ trait Namers extends MethodSynthesis {
// (a val's name ends in a " ", so can't compare to def)
val overridingSym = if (isGetter) vdef.symbol else vdef.symbol.getterIn(valOwner)
- // We're called from an accessorTypeCompleter, which is completing the info for the accessor's symbol,
+ // We're called from an AccessorTypeCompleter, which is completing the info for the accessor's symbol,
// which may or may not be `vdef.symbol` (see isGetter above)
val overridden = safeNextOverriddenSymbol(overridingSym)
@@ -1671,7 +1732,7 @@ trait Namers extends MethodSynthesis {
}
/**
- * TypeSig is invoked by monoTypeCompleters. It returns the type of a definition which
+ * TypeSig is invoked by MonoTypeCompleters. It returns the type of a definition which
* is then assigned to the corresponding symbol (typeSig itself does not need to assign
* the type to the symbol, but it can if necessary).
*/
@@ -1862,10 +1923,9 @@ trait Namers extends MethodSynthesis {
}
}
- def mkTypeCompleter(t: Tree)(c: Symbol => Unit) = new LockingTypeCompleter with FlagAgnosticCompleter {
- val tree = t
- def completeImpl(sym: Symbol) = c(sym)
- }
+ // NOTE: only meant for monomorphic definitions,
+ // do not use to wrap existing completers (see CompleterWrapper for that)
+ abstract class TypeCompleterBase[T <: Tree](val tree: T) extends LockingTypeCompleter with FlagAgnosticCompleter
trait LockingTypeCompleter extends TypeCompleter {
def completeImpl(sym: Symbol): Unit
@@ -1909,6 +1969,22 @@ trait Namers extends MethodSynthesis {
}
}
+ /**
+ * Wrap an existing completer to do some post/pre-processing of the completed type.
+ *
+ * @param completer
+ */
+ class CompleterWrapper(completer: TypeCompleter) extends TypeCompleter {
+ // override important when completer.isInstanceOf[PolyTypeCompleter]!
+ override val typeParams = completer.typeParams
+
+ val tree = completer.tree
+
+ override def complete(sym: Symbol): Unit = {
+ completer.complete(sym)
+ }
+ }
+
// Can we relax these restrictions? For motivation, see
// test/files/pos/depmet_implicit_oopsla_session_2.scala
// neg/depmet_try_implicit.scala
diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
index b1e7592b47..86a1d3f2e4 100644
--- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
@@ -1659,7 +1659,7 @@ abstract class RefChecks extends Transform {
case tp @ ExistentialType(tparams, tpe) =>
existentialParams ++= tparams
case ann: AnnotatedType if ann.hasAnnotation(UncheckedBoundsClass) =>
- // SI-7694 Allow code synthetizers to disable checking of bounds for TypeTrees based on inferred LUBs
+ // SI-7694 Allow code synthesizers to disable checking of bounds for TypeTrees based on inferred LUBs
// which might not conform to the constraints.
skipBounds = true
case tp: TypeRef =>
diff --git a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
index 8b1b2f35c5..57906cfe0a 100644
--- a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
@@ -315,7 +315,7 @@ abstract class SuperAccessors extends transform.Transform with transform.TypingT
* A trait which extends a class and accesses a protected member
* of that class cannot implement the necessary accessor method
* because jvm access restrictions require the call site to be
- * in an actual subclass, and an interface cannot extenda class.
+ * in an actual subclass, and an interface cannot extend a class.
* So, non-trait classes inspect their ancestors for any such situations
* and generate the accessors. See SI-2296.
*
diff --git a/src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala b/src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala
index a0139937f1..cd1dd18768 100644
--- a/src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala
@@ -119,13 +119,13 @@ trait TypeDiagnostics {
*/
final def exampleTuplePattern(names: List[Name]): String = {
val arity = names.length
- val varPatterNames: Option[List[String]] = sequence(names map {
+ val varPatternNames: Option[List[String]] = sequence(names map {
case name if nme.isVariableName(name) => Some(name.decode)
case _ => None
})
def parenthesize(a: String) = s"($a)"
def genericParams = (Seq("param1") ++ (if (arity > 2) Seq("...") else Nil) ++ Seq(s"param$arity"))
- parenthesize(varPatterNames.getOrElse(genericParams).mkString(", "))
+ parenthesize(varPatternNames.getOrElse(genericParams).mkString(", "))
}
def alternatives(tree: Tree): List[Type] = tree.tpe match {
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index b0a8b5d4c6..cd4a883a33 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -904,7 +904,7 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
if (meth.isConstructor) cantAdapt
// (4.2) eta-expand method value when function or sam type is expected
else if (isFunctionType(pt) || (!mt.params.isEmpty && samOf(pt).exists)) {
- // SI-9536 `!mt.params.isEmpty &&`: for backwards compatiblity with 2.11,
+ // SI-9536 `!mt.params.isEmpty &&`: for backwards compatibility with 2.11,
// we don't adapt a zero-arg method value to a SAM
// In 2.13, we won't do any eta-expansion for zero-arg method values, but we should deprecate first
@@ -2404,7 +2404,7 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
for (stat <- block.stats) enterLabelDef(stat)
if (phaseId(currentPeriod) <= currentRun.typerPhase.id) {
- // This is very tricky stuff, because we are navigating the Skylla and Charybdis of
+ // This is very tricky stuff, because we are navigating the Scylla and Charybdis of
// anonymous classes and what to return from them here. On the one hand, we cannot admit
// every non-private member of an anonymous class as a part of the structural type of the
// enclosing block. This runs afoul of the restriction that a structural type may not
@@ -2978,7 +2978,7 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
val funPt = normalize(methTyped.tpe) baseType FunctionClass(numVparams)
// println(s"typeUnEtaExpanded $meth : ${methTyped.tpe} --> normalized: $funPt")
- // If we are sure this function type provides all the necesarry info, so that we won't have
+ // If we are sure this function type provides all the necessary info, so that we won't have
// any undetermined argument types, go ahead an recurse below (`typedFunction(fun, mode, ptUnrollingEtaExpansion)`)
// and rest assured we won't end up right back here (and keep recursing)
if (isFunctionType(funPt) && funPt.typeArgs.iterator.take(numVparams).forall(isFullyDefined)) funPt
@@ -3091,7 +3091,7 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
result
}
- // TODO: adapt to new trait field encoding, figure out why this exaemption is made
+ // TODO: adapt to new trait field encoding, figure out why this exemption is made
// 'accessor' and 'accessed' are so similar it becomes very difficult to
//follow the logic, so I renamed one to something distinct.
def accesses(looker: Symbol, accessed: Symbol) = accessed.isLocalToThis && (
@@ -3099,8 +3099,7 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
|| (looker.hasAccessorFlag && !accessed.hasAccessorFlag && accessed.isPrivate)
)
- def checkNoDoubleDefs: Unit = {
- val scope = if (inBlock) context.scope else context.owner.info.decls
+ def checkNoDoubleDefs(scope: Scope): Unit = {
var e = scope.elems
while ((e ne null) && e.owner == scope) {
var e1 = scope.lookupNextEntry(e)
@@ -3143,8 +3142,7 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
}
}
- def addSynthetics(stats: List[Tree]): List[Tree] = {
- val scope = if (inBlock) context.scope else context.owner.info.decls
+ def addSynthetics(stats: List[Tree], scope: Scope): List[Tree] = {
var newStats = new ListBuffer[Tree]
var moreToAdd = true
while (moreToAdd) {
@@ -3219,11 +3217,14 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
val stats1 = stats mapConserve typedStat
if (phase.erasedTypes) stats1
else {
+ val scope = if (inBlock) context.scope else context.owner.info.decls
+
// As packages are open, it doesn't make sense to check double definitions here. Furthermore,
// it is expensive if the package is large. Instead, such double definitions are checked in `Namers.enterInScope`
if (!context.owner.isPackageClass)
- checkNoDoubleDefs
- addSynthetics(stats1)
+ checkNoDoubleDefs(scope)
+
+ addSynthetics(stats1, scope)
}
}
@@ -3426,29 +3427,29 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
// repeat vararg as often as needed, remove by-name
val formals = formalTypes(paramTypes, argslen)
- /* Try packing all arguments into a Tuple and apply `fun`
- * to that. This is the last thing which is tried (after
- * default arguments)
+ /* Try packing all arguments into a Tuple and apply `fun` to that.
+ * This is the last thing which is tried (after default arguments).
*/
- def tryTupleApply: Tree = {
- if (eligibleForTupleConversion(paramTypes, argslen) && !phase.erasedTypes) {
+ def tryTupleApply: Tree =
+ if (phase.erasedTypes || !eligibleForTupleConversion(paramTypes, argslen)) EmptyTree
+ else {
val tupleArgs = List(atPos(tree.pos.makeTransparent)(gen.mkTuple(args)))
// expected one argument, but got 0 or >1 ==> try applying to tuple
// the inner "doTypedApply" does "extractUndetparams" => restore when it fails
val savedUndetparams = context.undetparams
- silent(_.doTypedApply(tree, fun, tupleArgs, mode, pt)) map { t =>
- // Depending on user options, may warn or error here if
- // a Unit or tuple was inserted.
- val keepTree = (
- !mode.typingExprNotFun // why? introduced in 4e488a60, doc welcome
- || t.symbol == null // ditto
- || checkValidAdaptation(t, args)
- )
- if (keepTree) t else EmptyTree
- } orElse { _ => context.undetparams = savedUndetparams ; EmptyTree }
+ // May warn or error if a Unit or tuple was inserted.
+ def validate(t: Tree): Tree = {
+ // regardless of typer's mode
+ val invalidAdaptation = t.symbol != null && !checkValidAdaptation(t, args)
+ // only bail if we're typing an expression (and not inside another application)
+ if (invalidAdaptation && mode.typingExprNotFun) EmptyTree else t
+ }
+ def reset(errors: Seq[AbsTypeError]): Tree = {
+ context.undetparams = savedUndetparams
+ EmptyTree
+ }
+ silent(_.doTypedApply(tree, fun, tupleArgs, mode, pt)).map(validate).orElse(reset)
}
- else EmptyTree
- }
/* Treats an application which uses named or default arguments.
* Also works if names + a vararg used: when names are used, the vararg
@@ -4843,7 +4844,7 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
if (!(context.unit.isJava && cls.isClass && !cls.isModuleClass)) NoSymbol else {
val companion = companionSymbolOf(cls, context)
if (!companion.exists) NoSymbol
- else member(gen.mkAttributedRef(pre, companion), name) // assert(res.isStatic, s"inCompanionJavaStatic($pre, $cls, $name) = $res ${res.debugFlagString}")
+ else member(gen.mkAttributedRef(pre, companion), name) // assert(res.isStatic, s"inCompanionForJavaStatic($pre, $cls, $name) = $res ${res.debugFlagString}")
}
/* Attribute a selection where `tree` is `qual.name`.
diff --git a/src/compiler/scala/tools/nsc/typechecker/Unapplies.scala b/src/compiler/scala/tools/nsc/typechecker/Unapplies.scala
index f2e9b260b0..c13257f6ec 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Unapplies.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Unapplies.scala
@@ -24,7 +24,7 @@ trait Unapplies extends ast.TreeDSL {
private def unapplyParamName = nme.x_0
private def caseMods = Modifiers(SYNTHETIC | CASE)
- // In the typeCompleter (templateSig) of a case class (resp it's module),
+ // In the typeCompleter (templateSig) of a case class (resp its module),
// synthetic `copy` (reps `apply`, `unapply`) methods are added. To compute
// their signatures, the corresponding ClassDef is needed. During naming (in
// `enterClassDef`), the case class ClassDef is added as an attachment to the
diff --git a/src/library/scala/collection/JavaConverters.scala b/src/library/scala/collection/JavaConverters.scala
index d48a1764e9..2337f0ef84 100644
--- a/src/library/scala/collection/JavaConverters.scala
+++ b/src/library/scala/collection/JavaConverters.scala
@@ -18,12 +18,12 @@ import convert._
*
* The following conversions are supported via `asScala` and `asJava`:
*{{{
- * scala.collection.Iterable <=> java.lang.Iterable
- * scala.collection.Iterator <=> java.util.Iterator
- * scala.collection.mutable.Buffer <=> java.util.List
- * scala.collection.mutable.Set <=> java.util.Set
- * scala.collection.mutable.Map <=> java.util.Map
- * scala.collection.mutable.concurrent.Map <=> java.util.concurrent.ConcurrentMap
+ * scala.collection.Iterable <=> java.lang.Iterable
+ * scala.collection.Iterator <=> java.util.Iterator
+ * scala.collection.mutable.Buffer <=> java.util.List
+ * scala.collection.mutable.Set <=> java.util.Set
+ * scala.collection.mutable.Map <=> java.util.Map
+ * scala.collection.concurrent.Map <=> java.util.concurrent.ConcurrentMap
*}}}
* The following conversions are supported via `asScala` and through
* specially-named extension methods to convert to Java collections, as shown:
diff --git a/src/library/scala/collection/immutable/FilteredTraversableInternal.scala b/src/library/scala/collection/immutable/FilteredTraversableInternal.scala
deleted file mode 100644
index 35585b7826..0000000000
--- a/src/library/scala/collection/immutable/FilteredTraversableInternal.scala
+++ /dev/null
@@ -1,104 +0,0 @@
-/* __ *\
-** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2003-2013, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
-** /____/\___/_/ |_/____/_/ | | **
-** |/ **
-\* */
-
-package scala
-package collection
-package immutable
-
-import scala.annotation.tailrec
-
-/**
- * Optimised filter functions for List
- * n.b. this is an internal class to help maintain compatibility and should not be used directly.
- */
-private[immutable] trait FilteredTraversableInternal[+A, +Repr <: AnyRef with TraversableLike[A, Repr]] extends TraversableLike[A, Repr] {
-
- // Optimized for List
-
- override def filter(p: A => Boolean): Self = filterImpl(p, isFlipped = false)
-
- override def filterNot(p: A => Boolean): Self = filterImpl(p, isFlipped = true)
-
- private[this] def filterImpl(p: A => Boolean, isFlipped: Boolean): Self = {
-
- // everything seen so far so far is not included
- @tailrec def noneIn(l: Repr): Repr = {
- if (l.isEmpty)
- Nil.asInstanceOf[Repr]
- else {
- val h = l.head
- val t = l.tail
- if (p(h) != isFlipped)
- allIn(l, t)
- else
- noneIn(t)
- }
- }
-
- // everything from 'start' is included, if everything from this point is in we can return the origin
- // start otherwise if we discover an element that is out we must create a new partial list.
- @tailrec def allIn(start: Repr, remaining: Repr): Repr = {
- if (remaining.isEmpty)
- start
- else {
- val x = remaining.head
- if (p(x) != isFlipped)
- allIn(start, remaining.tail)
- else
- partialFill(start, remaining)
- }
- }
-
- // we have seen elements that should be included then one that should be excluded, start building
- def partialFill(origStart: Repr, firstMiss: Repr): Repr = {
- val newHead = new ::(origStart.head, Nil)
- var toProcess = origStart.tail
- var currentLast = newHead
-
- // we know that all elements are :: until at least firstMiss.tail
- while (!(toProcess eq firstMiss)) {
- val newElem = new ::(toProcess.head, Nil)
- currentLast.tl = newElem
- currentLast = newElem
- toProcess = toProcess.tail
- }
-
- // at this point newHead points to a list which is a duplicate of all the 'in' elements up to the first miss.
- // currentLast is the last element in that list.
-
- // now we are going to try and share as much of the tail as we can, only moving elements across when we have to.
- var next = firstMiss.tail
- var nextToCopy = next // the next element we would need to copy to our list if we cant share.
- while (!next.isEmpty) {
- // generally recommended is next.isNonEmpty but this incurs an extra method call.
- val head: A = next.head
- if (p(head) != isFlipped) {
- next = next.tail
- } else {
- // its not a match - do we have outstanding elements?
- while (!(nextToCopy eq next)) {
- val newElem = new ::(nextToCopy.head, Nil)
- currentLast.tl = newElem
- currentLast = newElem
- nextToCopy = nextToCopy.tail
- }
- nextToCopy = next.tail
- next = next.tail
- }
- }
-
- // we have remaining elements - they are unchanged attach them to the end
- if (!nextToCopy.isEmpty)
- currentLast.tl = nextToCopy.asInstanceOf[List[A]]
-
- newHead.asInstanceOf[Repr]
- }
-
- noneIn(repr)
- }
-} \ No newline at end of file
diff --git a/src/library/scala/collection/immutable/List.scala b/src/library/scala/collection/immutable/List.scala
index e12ce7c2eb..550b987cb6 100644
--- a/src/library/scala/collection/immutable/List.scala
+++ b/src/library/scala/collection/immutable/List.scala
@@ -88,7 +88,6 @@ sealed abstract class List[+A] extends AbstractSeq[A]
with Product
with GenericTraversableTemplate[A, List]
with LinearSeqOptimized[A, List[A]]
- with FilteredTraversableInternal[A, List[A]]
with scala.Serializable {
override def companion: GenericCompanion[List] = List
@@ -414,7 +413,6 @@ sealed abstract class List[+A] extends AbstractSeq[A]
// Create a proxy for Java serialization that allows us to avoid mutation
// during deserialization. This is the Serialization Proxy Pattern.
protected final def writeReplace(): AnyRef = new List.SerializationProxy(this)
-
}
/** The empty list.
diff --git a/src/library/scala/collection/immutable/Map.scala b/src/library/scala/collection/immutable/Map.scala
index cbdf7b39f5..4107b6414d 100644
--- a/src/library/scala/collection/immutable/Map.scala
+++ b/src/library/scala/collection/immutable/Map.scala
@@ -198,7 +198,7 @@ object Map extends ImmutableMapFactory[Map] {
else if (key == key2) new Map4(key1, value1, key2, value, key3, value3, key4, value4)
else if (key == key3) new Map4(key1, value1, key2, value2, key3, value, key4, value4)
else if (key == key4) new Map4(key1, value1, key2, value2, key3, value3, key4, value)
- else new HashMap + ((key1, value1), (key2, value2), (key3, value3), (key4, value4), (key, value))
+ else (new HashMap).updated(key1,value1).updated(key2, value2).updated(key3, value3).updated(key4, value4).updated(key, value)
def + [V1 >: V](kv: (K, V1)): Map[K, V1] = updated(kv._1, kv._2)
def - (key: K): Map[K, V] =
if (key == key1) new Map3(key2, value2, key3, value3, key4, value4)
diff --git a/src/library/scala/collection/immutable/Set.scala b/src/library/scala/collection/immutable/Set.scala
index 047ea736bd..0f16f97cb0 100644
--- a/src/library/scala/collection/immutable/Set.scala
+++ b/src/library/scala/collection/immutable/Set.scala
@@ -193,7 +193,7 @@ object Set extends ImmutableSetFactory[Set] {
elem == elem1 || elem == elem2 || elem == elem3 || elem == elem4
def + (elem: A): Set[A] =
if (contains(elem)) this
- else new HashSet[A] + (elem1, elem2, elem3, elem4, elem)
+ else new HashSet[A] + elem1 + elem2 + elem3 + elem4 + elem
def - (elem: A): Set[A] =
if (elem == elem1) new Set3(elem2, elem3, elem4)
else if (elem == elem2) new Set3(elem1, elem3, elem4)
diff --git a/src/library/scala/collection/mutable/ArrayOps.scala b/src/library/scala/collection/mutable/ArrayOps.scala
index 5de3dad256..0f83fd92c1 100644
--- a/src/library/scala/collection/mutable/ArrayOps.scala
+++ b/src/library/scala/collection/mutable/ArrayOps.scala
@@ -10,8 +10,6 @@ package scala
package collection
package mutable
-import java.util
-
import scala.reflect.ClassTag
import parallel.mutable.ParArray
@@ -182,23 +180,6 @@ sealed trait ArrayOps[T] extends Any with ArrayLike[T, Array[T]] with CustomPara
def seq = thisCollection
}
-/** to provide binary compat for 2.11 and 2.12 this class contains
- * functionality that should be migrated to ArrayOps in 2.13
- *
- */
-private[mutable] sealed trait ArrayOpsImpl[T] extends Any with ArrayOps[T] {
- override final def slice(from: Int, until: Int): Array[T] = {
- val start = if (from < 0) 0 else from
- if (until <= start || start >= repr.length)
- return emptyImpl
- val end = if (until > length) length else until
- sliceImpl(start, end)
- }
- protected def emptyImpl: Array[T]
- protected def sliceImpl(from: Int, until: Int): Array[T]
-
-}
-
/**
* A companion object for `ArrayOps`.
*
@@ -206,24 +187,12 @@ private[mutable] sealed trait ArrayOpsImpl[T] extends Any with ArrayOps[T] {
*/
object ArrayOps {
- private val emptyByteArray = new Array[Byte](0)
- private val emptyShortArray = new Array[Short](0)
- private val emptyIntArray = new Array[Int](0)
- private val emptyLongArray = new Array[Long](0)
- private val emptyFloatArray = new Array[Float](0)
- private val emptyDoubleArray = new Array[Double](0)
- private val emptyUnitArray = new Array[Unit](0)
- private val emptyCharArray = new Array[Char](0)
- private val emptyBooleanArray = new Array[Boolean](0)
-
- /** A subclass of `ArrayOps` for arrays containing reference types. */
- final class ofRef[T <: AnyRef](override val repr: Array[T]) extends AnyVal with ArrayOpsImpl[T] with ArrayLike[T, Array[T]] {
+ /** A class of `ArrayOps` for arrays containing reference types. */
+ final class ofRef[T <: AnyRef](override val repr: Array[T]) extends AnyVal with ArrayOps[T] with ArrayLike[T, Array[T]] {
override protected[this] def thisCollection: WrappedArray[T] = new WrappedArray.ofRef[T](repr)
override protected[this] def toCollection(repr: Array[T]): WrappedArray[T] = new WrappedArray.ofRef[T](repr)
override protected[this] def newBuilder = new ArrayBuilder.ofRef[T]()(ClassTag[T](repr.getClass.getComponentType))
- protected override def emptyImpl:Array[T] = util.Arrays.copyOf[T](repr,0)
- protected override def sliceImpl(from: Int, until: Int): Array[T] = util.Arrays.copyOfRange[T](repr, from, until)
def length: Int = repr.length
def apply(index: Int): T = repr(index)
@@ -231,13 +200,11 @@ object ArrayOps {
}
/** A subclass of `ArrayOps` for arrays containing `Byte`s. */
- final class ofByte(override val repr: Array[Byte]) extends AnyVal with ArrayOpsImpl[Byte] with ArrayLike[Byte, Array[Byte]] {
+ final class ofByte(override val repr: Array[Byte]) extends AnyVal with ArrayOps[Byte] with ArrayLike[Byte, Array[Byte]] {
override protected[this] def thisCollection: WrappedArray[Byte] = new WrappedArray.ofByte(repr)
override protected[this] def toCollection(repr: Array[Byte]): WrappedArray[Byte] = new WrappedArray.ofByte(repr)
override protected[this] def newBuilder = new ArrayBuilder.ofByte
- protected override def emptyImpl = emptyByteArray
- protected override def sliceImpl(from: Int, until: Int) = util.Arrays.copyOfRange(repr, from, until)
def length: Int = repr.length
def apply(index: Int): Byte = repr(index)
@@ -245,13 +212,11 @@ object ArrayOps {
}
/** A subclass of `ArrayOps` for arrays containing `Short`s. */
- final class ofShort(override val repr: Array[Short]) extends AnyVal with ArrayOpsImpl[Short] with ArrayLike[Short, Array[Short]] {
+ final class ofShort(override val repr: Array[Short]) extends AnyVal with ArrayOps[Short] with ArrayLike[Short, Array[Short]] {
override protected[this] def thisCollection: WrappedArray[Short] = new WrappedArray.ofShort(repr)
override protected[this] def toCollection(repr: Array[Short]): WrappedArray[Short] = new WrappedArray.ofShort(repr)
override protected[this] def newBuilder = new ArrayBuilder.ofShort
- protected override def emptyImpl = emptyShortArray
- protected override def sliceImpl(from: Int, until: Int) = util.Arrays.copyOfRange(repr, from, until)
def length: Int = repr.length
def apply(index: Int): Short = repr(index)
@@ -259,13 +224,11 @@ object ArrayOps {
}
/** A subclass of `ArrayOps` for arrays containing `Char`s. */
- final class ofChar(override val repr: Array[Char]) extends AnyVal with ArrayOpsImpl[Char] with ArrayLike[Char, Array[Char]] {
+ final class ofChar(override val repr: Array[Char]) extends AnyVal with ArrayOps[Char] with ArrayLike[Char, Array[Char]] {
override protected[this] def thisCollection: WrappedArray[Char] = new WrappedArray.ofChar(repr)
override protected[this] def toCollection(repr: Array[Char]): WrappedArray[Char] = new WrappedArray.ofChar(repr)
override protected[this] def newBuilder = new ArrayBuilder.ofChar
- protected override def emptyImpl = emptyCharArray
- protected override def sliceImpl(from: Int, until: Int) = util.Arrays.copyOfRange(repr, from, until)
def length: Int = repr.length
def apply(index: Int): Char = repr(index)
@@ -273,13 +236,11 @@ object ArrayOps {
}
/** A subclass of `ArrayOps` for arrays containing `Int`s. */
- final class ofInt(override val repr: Array[Int]) extends AnyVal with ArrayOpsImpl[Int] with ArrayLike[Int, Array[Int]] {
+ final class ofInt(override val repr: Array[Int]) extends AnyVal with ArrayOps[Int] with ArrayLike[Int, Array[Int]] {
override protected[this] def thisCollection: WrappedArray[Int] = new WrappedArray.ofInt(repr)
override protected[this] def toCollection(repr: Array[Int]): WrappedArray[Int] = new WrappedArray.ofInt(repr)
override protected[this] def newBuilder = new ArrayBuilder.ofInt
- protected override def emptyImpl = emptyIntArray
- protected override def sliceImpl(from: Int, until: Int) = util.Arrays.copyOfRange(repr, from, until)
def length: Int = repr.length
def apply(index: Int): Int = repr(index)
@@ -287,13 +248,11 @@ object ArrayOps {
}
/** A subclass of `ArrayOps` for arrays containing `Long`s. */
- final class ofLong(override val repr: Array[Long]) extends AnyVal with ArrayOpsImpl[Long] with ArrayLike[Long, Array[Long]] {
+ final class ofLong(override val repr: Array[Long]) extends AnyVal with ArrayOps[Long] with ArrayLike[Long, Array[Long]] {
override protected[this] def thisCollection: WrappedArray[Long] = new WrappedArray.ofLong(repr)
override protected[this] def toCollection(repr: Array[Long]): WrappedArray[Long] = new WrappedArray.ofLong(repr)
override protected[this] def newBuilder = new ArrayBuilder.ofLong
- protected override def emptyImpl = emptyLongArray
- protected override def sliceImpl(from: Int, until: Int) = util.Arrays.copyOfRange(repr, from, until)
def length: Int = repr.length
def apply(index: Int): Long = repr(index)
@@ -301,13 +260,11 @@ object ArrayOps {
}
/** A subclass of `ArrayOps` for arrays containing `Float`s. */
- final class ofFloat(override val repr: Array[Float]) extends AnyVal with ArrayOpsImpl[Float] with ArrayLike[Float, Array[Float]] {
+ final class ofFloat(override val repr: Array[Float]) extends AnyVal with ArrayOps[Float] with ArrayLike[Float, Array[Float]] {
override protected[this] def thisCollection: WrappedArray[Float] = new WrappedArray.ofFloat(repr)
override protected[this] def toCollection(repr: Array[Float]): WrappedArray[Float] = new WrappedArray.ofFloat(repr)
override protected[this] def newBuilder = new ArrayBuilder.ofFloat
- protected override def emptyImpl = emptyFloatArray
- protected override def sliceImpl(from: Int, until: Int) = util.Arrays.copyOfRange(repr, from, until)
def length: Int = repr.length
def apply(index: Int): Float = repr(index)
@@ -315,13 +272,11 @@ object ArrayOps {
}
/** A subclass of `ArrayOps` for arrays containing `Double`s. */
- final class ofDouble(override val repr: Array[Double]) extends AnyVal with ArrayOpsImpl[Double] with ArrayLike[Double, Array[Double]] {
+ final class ofDouble(override val repr: Array[Double]) extends AnyVal with ArrayOps[Double] with ArrayLike[Double, Array[Double]] {
override protected[this] def thisCollection: WrappedArray[Double] = new WrappedArray.ofDouble(repr)
override protected[this] def toCollection(repr: Array[Double]): WrappedArray[Double] = new WrappedArray.ofDouble(repr)
override protected[this] def newBuilder = new ArrayBuilder.ofDouble
- protected override def emptyImpl = emptyDoubleArray
- protected override def sliceImpl(from: Int, until: Int) = util.Arrays.copyOfRange(repr, from, until)
def length: Int = repr.length
def apply(index: Int): Double = repr(index)
@@ -329,13 +284,11 @@ object ArrayOps {
}
/** A subclass of `ArrayOps` for arrays containing `Boolean`s. */
- final class ofBoolean(override val repr: Array[Boolean]) extends AnyVal with ArrayOpsImpl[Boolean] with ArrayLike[Boolean, Array[Boolean]] {
+ final class ofBoolean(override val repr: Array[Boolean]) extends AnyVal with ArrayOps[Boolean] with ArrayLike[Boolean, Array[Boolean]] {
override protected[this] def thisCollection: WrappedArray[Boolean] = new WrappedArray.ofBoolean(repr)
override protected[this] def toCollection(repr: Array[Boolean]): WrappedArray[Boolean] = new WrappedArray.ofBoolean(repr)
override protected[this] def newBuilder = new ArrayBuilder.ofBoolean
- protected override def emptyImpl = emptyBooleanArray
- protected override def sliceImpl(from: Int, until: Int) = util.Arrays.copyOfRange(repr, from, until)
def length: Int = repr.length
def apply(index: Int): Boolean = repr(index)
@@ -343,18 +296,11 @@ object ArrayOps {
}
/** A subclass of `ArrayOps` for arrays of `Unit` types. */
- final class ofUnit(override val repr: Array[Unit]) extends AnyVal with ArrayOpsImpl[Unit] with ArrayLike[Unit, Array[Unit]] {
+ final class ofUnit(override val repr: Array[Unit]) extends AnyVal with ArrayOps[Unit] with ArrayLike[Unit, Array[Unit]] {
override protected[this] def thisCollection: WrappedArray[Unit] = new WrappedArray.ofUnit(repr)
override protected[this] def toCollection(repr: Array[Unit]): WrappedArray[Unit] = new WrappedArray.ofUnit(repr)
override protected[this] def newBuilder = new ArrayBuilder.ofUnit
- protected override def emptyImpl = emptyUnitArray
- protected override def sliceImpl(from: Int, until: Int) = {
- // cant use util.Arrays.copyOfRange[Unit](repr, from, until) - Unit is special and doesnt compile
- val res = new Array[Unit](until-from)
- System.arraycopy(repr, from, res, 0, res.size)
- res
- }
def length: Int = repr.length
def apply(index: Int): Unit = repr(index)
diff --git a/src/library/scala/collection/mutable/ListBuffer.scala b/src/library/scala/collection/mutable/ListBuffer.scala
index 3bb7004184..aa79e972d5 100644
--- a/src/library/scala/collection/mutable/ListBuffer.scala
+++ b/src/library/scala/collection/mutable/ListBuffer.scala
@@ -119,6 +119,10 @@ final class ListBuffer[A]
// Don't use the inherited size, which forwards to a List and is O(n).
override def size = length
+ // Override with efficient implementations using the extra size information available to ListBuffer.
+ override def isEmpty: Boolean = len == 0
+ override def nonEmpty: Boolean = len > 0
+
// Implementations of abstract methods in Buffer
override def apply(n: Int): A =
diff --git a/src/library/scala/collection/mutable/WrappedArray.scala b/src/library/scala/collection/mutable/WrappedArray.scala
index d0919c4357..0b5ebe7e9a 100644
--- a/src/library/scala/collection/mutable/WrappedArray.scala
+++ b/src/library/scala/collection/mutable/WrappedArray.scala
@@ -85,26 +85,12 @@ extends AbstractSeq[T]
*/
override protected[this] def newBuilder: Builder[T, WrappedArray[T]] =
new WrappedArrayBuilder[T](elemTag)
-}
-
-private[mutable] abstract class WrappedArrayImpl[T] extends WrappedArray[T] {
- override def slice(from: Int, until: Int): WrappedArray[T] = {
- val start = if (from < 0) 0 else from
- if (until <= start || start >= repr.length)
- return emptyImpl
- val end = if (until > length) length else until
- sliceImpl(start, end)
- }
- protected def emptyImpl: WrappedArray[T]
-
- protected def sliceImpl(from: Int, until: Int): WrappedArray[T]
}
/** A companion object used to create instances of `WrappedArray`.
*/
object WrappedArray {
- import java.util
// This is reused for all calls to empty.
private val EmptyWrappedArray = new ofRef[AnyRef](new Array[AnyRef](0))
def empty[T <: AnyRef]: WrappedArray[T] = EmptyWrappedArray.asInstanceOf[WrappedArray[T]]
@@ -138,17 +124,7 @@ object WrappedArray {
def newBuilder[A]: Builder[A, IndexedSeq[A]] = new ArrayBuffer
- private val emptyWrappedByte = new ofByte(new Array[Byte](0))
- private val emptyWrappedShort = new ofShort(new Array[Short](0))
- private val emptyWrappedInt = new ofInt(new Array[Int](0))
- private val emptyWrappedLong = new ofLong(new Array[Long](0))
- private val emptyWrappedFloat = new ofFloat(new Array[Float](0))
- private val emptyWrappedDouble = new ofDouble(new Array[Double](0))
- private val emptyWrappedUnit = new ofUnit(new Array[Unit](0))
- private val emptyWrappedChar = new ofChar(new Array[Char](0))
- private val emptyWrappedBoolean = new ofBoolean(new Array[Boolean](0))
-
- final class ofRef[T <: AnyRef](val array: Array[T]) extends WrappedArrayImpl[T] with Serializable {
+ final class ofRef[T <: AnyRef](val array: Array[T]) extends WrappedArray[T] with Serializable {
lazy val elemTag = ClassTag[T](array.getClass.getComponentType)
def length: Int = array.length
def apply(index: Int): T = array(index).asInstanceOf[T]
@@ -158,11 +134,9 @@ object WrappedArray {
case that: ofRef[_] => Arrays.equals(array.asInstanceOf[Array[AnyRef]], that.array.asInstanceOf[Array[AnyRef]])
case _ => super.equals(that)
}
- protected override def emptyImpl = new ofRef(util.Arrays.copyOf[T](array,0))
- protected override def sliceImpl(from: Int, until: Int) = new ofRef[T](util.Arrays.copyOfRange[T](array, from, until))
}
- final class ofByte(val array: Array[Byte]) extends WrappedArrayImpl[Byte] with Serializable {
+ final class ofByte(val array: Array[Byte]) extends WrappedArray[Byte] with Serializable {
def elemTag = ClassTag.Byte
def length: Int = array.length
def apply(index: Int): Byte = array(index)
@@ -172,11 +146,9 @@ object WrappedArray {
case that: ofByte => Arrays.equals(array, that.array)
case _ => super.equals(that)
}
- protected override def emptyImpl = emptyWrappedByte
- protected override def sliceImpl(from: Int, until: Int) = new ofByte(util.Arrays.copyOfRange(array, from, until))
}
- final class ofShort(val array: Array[Short]) extends WrappedArrayImpl[Short] with Serializable {
+ final class ofShort(val array: Array[Short]) extends WrappedArray[Short] with Serializable {
def elemTag = ClassTag.Short
def length: Int = array.length
def apply(index: Int): Short = array(index)
@@ -186,11 +158,9 @@ object WrappedArray {
case that: ofShort => Arrays.equals(array, that.array)
case _ => super.equals(that)
}
- protected override def emptyImpl = emptyWrappedShort
- protected override def sliceImpl(from: Int, until: Int) = new ofShort(util.Arrays.copyOfRange(array, from, until))
}
- final class ofChar(val array: Array[Char]) extends WrappedArrayImpl[Char] with Serializable {
+ final class ofChar(val array: Array[Char]) extends WrappedArray[Char] with Serializable {
def elemTag = ClassTag.Char
def length: Int = array.length
def apply(index: Int): Char = array(index)
@@ -200,11 +170,9 @@ object WrappedArray {
case that: ofChar => Arrays.equals(array, that.array)
case _ => super.equals(that)
}
- protected override def emptyImpl = emptyWrappedChar
- protected override def sliceImpl(from: Int, until: Int) = new ofChar(util.Arrays.copyOfRange(array, from, until))
}
- final class ofInt(val array: Array[Int]) extends WrappedArrayImpl[Int] with Serializable {
+ final class ofInt(val array: Array[Int]) extends WrappedArray[Int] with Serializable {
def elemTag = ClassTag.Int
def length: Int = array.length
def apply(index: Int): Int = array(index)
@@ -214,11 +182,9 @@ object WrappedArray {
case that: ofInt => Arrays.equals(array, that.array)
case _ => super.equals(that)
}
- protected override def emptyImpl = emptyWrappedInt
- protected override def sliceImpl(from: Int, until: Int) = new ofInt(util.Arrays.copyOfRange(array, from, until))
}
- final class ofLong(val array: Array[Long]) extends WrappedArrayImpl[Long] with Serializable {
+ final class ofLong(val array: Array[Long]) extends WrappedArray[Long] with Serializable {
def elemTag = ClassTag.Long
def length: Int = array.length
def apply(index: Int): Long = array(index)
@@ -228,11 +194,9 @@ object WrappedArray {
case that: ofLong => Arrays.equals(array, that.array)
case _ => super.equals(that)
}
- protected override def emptyImpl = emptyWrappedLong
- protected override def sliceImpl(from: Int, until: Int) = new ofLong(util.Arrays.copyOfRange(array, from, until))
}
- final class ofFloat(val array: Array[Float]) extends WrappedArrayImpl[Float] with Serializable {
+ final class ofFloat(val array: Array[Float]) extends WrappedArray[Float] with Serializable {
def elemTag = ClassTag.Float
def length: Int = array.length
def apply(index: Int): Float = array(index)
@@ -242,11 +206,9 @@ object WrappedArray {
case that: ofFloat => Arrays.equals(array, that.array)
case _ => super.equals(that)
}
- protected override def emptyImpl = emptyWrappedFloat
- protected override def sliceImpl(from: Int, until: Int) = new ofFloat(util.Arrays.copyOfRange(array, from, until))
}
- final class ofDouble(val array: Array[Double]) extends WrappedArrayImpl[Double] with Serializable {
+ final class ofDouble(val array: Array[Double]) extends WrappedArray[Double] with Serializable {
def elemTag = ClassTag.Double
def length: Int = array.length
def apply(index: Int): Double = array(index)
@@ -256,11 +218,9 @@ object WrappedArray {
case that: ofDouble => Arrays.equals(array, that.array)
case _ => super.equals(that)
}
- protected override def emptyImpl = emptyWrappedDouble
- protected override def sliceImpl(from: Int, until: Int) = new ofDouble(util.Arrays.copyOfRange(array, from, until))
}
- final class ofBoolean(val array: Array[Boolean]) extends WrappedArrayImpl[Boolean] with Serializable {
+ final class ofBoolean(val array: Array[Boolean]) extends WrappedArray[Boolean] with Serializable {
def elemTag = ClassTag.Boolean
def length: Int = array.length
def apply(index: Int): Boolean = array(index)
@@ -270,11 +230,9 @@ object WrappedArray {
case that: ofBoolean => Arrays.equals(array, that.array)
case _ => super.equals(that)
}
- protected override def emptyImpl = emptyWrappedBoolean
- protected override def sliceImpl(from: Int, until: Int) = new ofBoolean(util.Arrays.copyOfRange(array, from, until))
}
- final class ofUnit(val array: Array[Unit]) extends WrappedArrayImpl[Unit] with Serializable {
+ final class ofUnit(val array: Array[Unit]) extends WrappedArray[Unit] with Serializable {
def elemTag = ClassTag.Unit
def length: Int = array.length
def apply(index: Int): Unit = array(index)
@@ -284,14 +242,5 @@ object WrappedArray {
case that: ofUnit => array.length == that.array.length
case _ => super.equals(that)
}
- protected override def emptyImpl = emptyWrappedUnit
- protected override def sliceImpl(from: Int, until: Int) = {
- // cant use
- // new ofUnit(util.Arrays.copyOfRange[Unit](array, from, until)) - Unit is special and doesnt compile
- // cant use util.Arrays.copyOfRange[Unit](repr, from, until) - Unit is special and doesnt compile
- val res = new Array[Unit](until-from)
- System.arraycopy(repr, from, res, 0, until-from)
- new ofUnit(res)
- }
}
}
diff --git a/src/library/scala/concurrent/BatchingExecutor.scala b/src/library/scala/concurrent/BatchingExecutor.scala
index a0d7aaea47..fd31f3470e 100644
--- a/src/library/scala/concurrent/BatchingExecutor.scala
+++ b/src/library/scala/concurrent/BatchingExecutor.scala
@@ -103,7 +103,7 @@ private[concurrent] trait BatchingExecutor extends Executor {
override def execute(runnable: Runnable): Unit = {
if (batchable(runnable)) { // If we can batch the runnable
_tasksLocal.get match {
- case null => unbatchedExecute(new Batch(List(runnable))) // If we aren't in batching mode yet, enqueue batch
+ case null => unbatchedExecute(new Batch(runnable :: Nil)) // If we aren't in batching mode yet, enqueue batch
case some => _tasksLocal.set(runnable :: some) // If we are already in batching mode, add to batch
}
} else unbatchedExecute(runnable) // If not batchable, just delegate to underlying
diff --git a/src/library/scala/concurrent/ExecutionContext.scala b/src/library/scala/concurrent/ExecutionContext.scala
index fe684e4d46..f46f294387 100644
--- a/src/library/scala/concurrent/ExecutionContext.scala
+++ b/src/library/scala/concurrent/ExecutionContext.scala
@@ -25,21 +25,20 @@ import scala.annotation.implicitNotFound
* and an implicit `ExecutionContext`. The implicit `ExecutionContext`
* will be used to execute the callback.
*
- * It is possible to simply import
+ * While it is possible to simply import
* `scala.concurrent.ExecutionContext.Implicits.global` to obtain an
- * implicit `ExecutionContext`. This global context is a reasonable
- * default thread pool.
- *
- * However, application developers should carefully consider where they
- * want to set policy; ideally, one place per application (or per
- * logically-related section of code) will make a decision about
- * which `ExecutionContext` to use. That is, you might want to avoid
- * hardcoding `scala.concurrent.ExecutionContext.Implicits.global` all
- * over the place in your code.
- * One approach is to add `(implicit ec: ExecutionContext)`
- * to methods which need an `ExecutionContext`. Then import a specific
- * context in one place for the entire application or module,
- * passing it implicitly to individual methods.
+ * implicit `ExecutionContext`, application developers should carefully
+ * consider where they want to set execution policy;
+ * ideally, one place per application—or per logically related section of code—
+ * will make a decision about which `ExecutionContext` to use.
+ * That is, you will mostly want to avoid hardcoding, especially via an import,
+ * `scala.concurrent.ExecutionContext.Implicits.global`.
+ * The recommended approach is to add `(implicit ec: ExecutionContext)` to methods,
+ * or class constructor parameters, which need an `ExecutionContext`.
+ *
+ * Then locally import a specific `ExecutionContext` in one place for the entire
+ * application or module, passing it implicitly to individual methods.
+ * Alternatively define a local implicit val with the required `ExecutionContext`.
*
* A custom `ExecutionContext` may be appropriate to execute code
* which blocks on IO or performs long-running computations.
@@ -111,9 +110,18 @@ object ExecutionContext {
* The explicit global `ExecutionContext`. Invoke `global` when you want to provide the global
* `ExecutionContext` explicitly.
*
- * The default `ExecutionContext` implementation is backed by a work-stealing thread pool. By default,
- * the thread pool uses a target number of worker threads equal to the number of
- * [[https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html#availableProcessors-- available processors]].
+ * The default `ExecutionContext` implementation is backed by a work-stealing thread pool.
+ * It can be configured via the following [[scala.sys.SystemProperties]]:
+ *
+ * `scala.concurrent.context.minThreads` = defaults to "1"
+ * `scala.concurrent.context.numThreads` = defaults to "x1" (i.e. the current number of available processors * 1)
+ * `scala.concurrent.context.maxThreads` = defaults to "x1" (i.e. the current number of available processors * 1)
+ * `scala.concurrent.context.maxExtraThreads` = defaults to "256"
+ *
+ * The pool size of threads is then `numThreads` bounded by `minThreads` on the lower end and `maxThreads` on the high end.
+ *
+ * The `maxExtraThreads` is the maximum number of extra threads to have at any given time to evade deadlock,
+ * see [[scala.concurrent.BlockContext]].
*
* @return the global `ExecutionContext`
*/
diff --git a/src/library/scala/concurrent/package.scala b/src/library/scala/concurrent/package.scala
index 667a7547ac..0695ee3351 100644
--- a/src/library/scala/concurrent/package.scala
+++ b/src/library/scala/concurrent/package.scala
@@ -22,12 +22,31 @@ import scala.annotation.implicitNotFound
* == Common Imports ==
*
* When working with Futures, you will often find that importing the whole concurrent
- * package is convenient, furthermore you are likely to need an implicit ExecutionContext
- * in scope for many operations involving Futures and Promises:
+ * package is convenient:
*
* {{{
* import scala.concurrent._
- * import ExecutionContext.Implicits.global
+ * }}}
+ *
+ * When using things like `Future`s, it is often required to have an implicit `ExecutionContext`
+ * in scope. The general advice for these implicits are as follows.
+ *
+ * If the code in question is a class or method definition, and no `ExecutionContext` is available,
+ * request one from the caller by adding an implicit parameter list:
+ *
+ * {{{
+ * def myMethod(myParam: MyType)(implicit ec: ExecutionContext) = …
+ * //Or
+ * class MyClass(myParam: MyType)(implicit ec: ExecutionContext) { … }
+ * }}}
+ *
+ * This allows the caller of the method, or creator of the instance of the class, to decide which
+ * `ExecutionContext` should be used.
+ *
+ * For typical REPL usage and experimentation, importing the global `ExecutionContext` is often desired.
+ *
+ * {{{
+ * import scala.concurrent.ExcutionContext.Implicits.global
* }}}
*
* == Specifying Durations ==
@@ -140,17 +159,20 @@ package concurrent {
/**
* `Await` is what is used to ensure proper handling of blocking for `Awaitable` instances.
*
- * While occasionally useful, e.g. for testing, it is recommended that you avoid Await
- * when possible in favor of callbacks and combinators like onComplete and use in
- * for comprehensions. Await will block the thread on which it runs, and could cause
- * performance and deadlock issues.
+ * While occasionally useful, e.g. for testing, it is recommended that you avoid Await whenever possible—
+ * instead favoring combinators and/or callbacks.
+ * Await's `result` and `ready` methods will block the calling thread's execution until they return,
+ * which will cause performance degradation, and possibly, deadlock issues.
*/
object Await {
/**
* Await the "completed" state of an `Awaitable`.
*
* Although this method is blocking, the internal use of [[scala.concurrent.blocking blocking]] ensures that
- * the underlying [[ExecutionContext]] is prepared to properly manage the blocking.
+ * the underlying [[ExecutionContext]] is given an opportunity to properly manage the blocking.
+ *
+ * WARNING: It is strongly discouraged to supply lengthy timeouts since the progress of the calling thread will be
+ * suspended—blocked—until either the `Awaitable` becomes ready or the timeout expires.
*
* @param awaitable
* the `Awaitable` to be awaited
@@ -172,7 +194,10 @@ package concurrent {
* Await and return the result (of type `T`) of an `Awaitable`.
*
* Although this method is blocking, the internal use of [[scala.concurrent.blocking blocking]] ensures that
- * the underlying [[ExecutionContext]] to properly detect blocking and ensure that there are no deadlocks.
+ * the underlying [[ExecutionContext]] is given an opportunity to properly manage the blocking.
+ *
+ * WARNING: It is strongly discouraged to supply lengthy timeouts since the progress of the calling thread will be
+ * suspended—blocked—until either the `Awaitable` has a result or the timeout expires.
*
* @param awaitable
* the `Awaitable` to be awaited
diff --git a/src/library/scala/sys/process/ProcessBuilder.scala b/src/library/scala/sys/process/ProcessBuilder.scala
index b7966b0341..d0745e5833 100644
--- a/src/library/scala/sys/process/ProcessBuilder.scala
+++ b/src/library/scala/sys/process/ProcessBuilder.scala
@@ -257,10 +257,9 @@ trait ProcessBuilder extends Source with Sink {
*/
def run(connectInput: Boolean): Process
- /** Starts the process represented by this builder, blocks until it exits, and
- * returns the exit code. Standard output and error are sent to the given
- * ProcessLogger. The newly started process reads from standard input of the
- * current process if `connectInput` is true.
+ /** Starts the process represented by this builder. Standard output and error
+ * are sent to the given ProcessLogger. The newly started process reads from
+ * standard input of the current process if `connectInput` is true.
*/
def run(log: ProcessLogger, connectInput: Boolean): Process
diff --git a/src/library/scala/util/Either.scala b/src/library/scala/util/Either.scala
index 523c10c483..d295478698 100644
--- a/src/library/scala/util/Either.scala
+++ b/src/library/scala/util/Either.scala
@@ -6,54 +6,52 @@
** |/ **
\* */
-
-
package scala
package util
/** Represents a value of one of two possible types (a disjoint union.)
- * An instance of Either is either an instance of [[scala.util.Left]] or [[scala.util.Right]].
+ * An instance of `Either` is an instance of either [[scala.util.Left]] or [[scala.util.Right]].
*
- * A common use of Either is as an alternative to [[scala.Option]] for dealing
- * with possible missing values. In this usage, [[scala.None]] is replaced
+ * A common use of `Either` is as an alternative to [[scala.Option]] for dealing
+ * with possibly missing values. In this usage, [[scala.None]] is replaced
* with a [[scala.util.Left]] which can contain useful information.
* [[scala.util.Right]] takes the place of [[scala.Some]]. Convention dictates
- * that Left is used for failure and Right is used for success.
+ * that `Left` is used for failure and `Right` is used for success.
*
- * For example, you could use `Either[String, Int]` to detect whether a
- * received input is a String or an Int.
+ * For example, you could use `Either[String, Int]` to indicate whether a
+ * received input is a `String` or an `Int`.
*
* {{{
- * val in = Console.readLine("Type Either a string or an Int: ")
- * val result: Either[String,Int] = try {
- * Right(in.toInt)
- * } catch {
- * case e: Exception =>
- * Left(in)
- * }
+ * import scala.io.StdIn._
+ * val in = readLine("Type Either a string or an Int: ")
+ * val result: Either[String,Int] =
+ * try Right(in.toInt)
+ * catch {
+ * case e: NumberFormatException => Left(in)
+ * }
*
- * println(result match {
+ * result match {
* case Right(x) => s"You passed me the Int: $x, which I will increment. $x + 1 = ${x+1}"
* case Left(x) => s"You passed me the String: $x"
- * })
+ * }
* }}}
*
- * Either is right-biased, which means that Right is assumed to be the default case to
- * operate on. If it is Left, operations like map, flatMap, ... return the Left value
- * unchanged:
+ * `Either` is right-biased, which means that `Right` is assumed to be the default case to
+ * operate on. If it is `Left`, operations like `map` and `flatMap` return the `Left` value unchanged:
*
* {{{
- * Right(12).map(_ * 2) // Right(24)
- * Left(23).map(_ * 2) // Left(23)
+ * def doubled(i: Int) = i * 2
+ * Right(42).map(doubled) // Right(84)
+ * Left(42).map(doubled) // Left(42)
* }}}
*
- * As Either defines the methods `map` and `flatMap`, it can also be used in for comprehensions:
+ * Since `Either` defines the methods `map` and `flatMap`, it can also be used in for comprehensions:
* {{{
- * val right1: Right[Double, Int] = Right(1)
- * val right2 = Right(2)
- * val right3 = Right(3)
- * val left23: Left[Double, Int] = Left(23.0)
- * val left42 = Left(42.0)
+ * val right1 = Right(1) : Right[Double, Int]
+ * val right2 = Right(2)
+ * val right3 = Right(3)
+ * val left23 = Left(23.0) : Left[Double, Int]
+ * val left42 = Left(42.0)
*
* for {
* a <- right1
@@ -73,8 +71,9 @@ package util
* c <- right2
* } yield a + b + c // Left(23.0)
*
- * // It is advisable to provide the type of the “missing” value (especially the right value for `Left`)
- * // as otherwise that type might be inferred as `Nothing` without context:
+ * // It may be necessary to provide the type of the “missing” value, especially the type
+ * // of the right value for `Left`. Otherwise, without any context that constrains the type,
+ * // it might be inferred as `Nothing`:
* for {
* a <- left23
* b <- right1
@@ -92,77 +91,69 @@ package util
* @since 2.7
*/
sealed abstract class Either[+A, +B] extends Product with Serializable {
- /**
- * Projects this `Either` as a `Left`.
- */
+ /** Projects this `Either` as a `Left`. */
def left = Either.LeftProjection(this)
- /**
- * Projects this `Either` as a `Right`.
+ /** Projects this `Either` as a `Right`.
*
- * Because `Either` is right-biased, this method is not normally needed.
- * (It is retained in the API for now for easy cross-compilation between Scala
- * 2.11 and 2.12.)
+ * Because `Either` is right-biased, this method is not normally needed.
*/
def right = Either.RightProjection(this)
- /**
- * Applies `fa` if this is a `Left` or `fb` if this is a `Right`.
+ /** Applies `fa` if this is a `Left` or `fb` if this is a `Right`.
*
- * @example {{{
- * val result: Either[Exception, Value] = possiblyFailingOperation()
- * log(result.fold(
- * ex => s"Operation failed with $ex",
- * v => s"Operation produced value: $v"
- * ))
- * }}}
+ * @example {{{
+ * val result = util.Try("42".toInt).toEither
+ * result.fold(
+ * e => s"Operation failed with $e",
+ * v => s"Operation produced value: $v"
+ * )
+ * }}}
*
- * @param fa the function to apply if this is a `Left`
- * @param fb the function to apply if this is a `Right`
- * @return the results of applying the function
+ * @param fa the function to apply if this is a `Left`
+ * @param fb the function to apply if this is a `Right`
+ * @return the results of applying the function
*/
def fold[C](fa: A => C, fb: B => C): C = this match {
case Right(b) => fb(b)
case Left(a) => fa(a)
}
- /**
- * If this is a `Left`, then return the left value in `Right` or vice versa.
+ /** If this is a `Left`, then return the left value in `Right` or vice versa.
*
- * @example {{{
- * val left: Either[String, Int] = Left("left")
- * val right: Either[Int, String] = l.swap // Result: Right("left")
- * }}}
- * @example {{{
- * val right = Right(2)
- * val left = Left(3)
- * for {
- * r1 <- right
- * r2 <- left.swap
- * } yield r1 * r2 // Right(6)
- * }}}
+ * @example {{{
+ * val left: Either[String, Int] = Left("left")
+ * val right: Either[Int, String] = left.swap // Result: Right("left")
+ * }}}
+ * @example {{{
+ * val right = Right(2)
+ * val left = Left(3)
+ * for {
+ * r1 <- right
+ * r2 <- left.swap
+ * } yield r1 * r2 // Right(6)
+ * }}}
*/
def swap: Either[B, A] = this match {
case Left(a) => Right(a)
case Right(b) => Left(b)
}
- /**
- * Joins an `Either` through `Right`.
+ /** Joins an `Either` through `Right`.
*
- * This method requires that the right side of this Either is itself an
- * Either type. That is, this must be some type like: {{{
- * Either[A, Either[A, C]]
- * }}} (which respects the type parameter bounds, shown below.)
+ * This method requires that the right side of this `Either` is itself
+ * an `Either` type. That is, this must be some type like: {{{
+ * Either[A, Either[A, C]]
+ * }}} (which respects the type parameter bounds, shown below.)
*
- * If this instance is a Right[Either[A, C]] then the contained Either[A, C]
- * will be returned, otherwise this value will be returned unmodified.
+ * If this instance is a `Right[Either[A, C]]` then the contained `Either[A, C]`
+ * will be returned, otherwise this value will be returned unmodified.
*
- * @example {{{
- * Right[String, Either[String, Int]](Right(12)).joinRight // Result: Right(12)
- * Right[String, Either[String, Int]](Left("flower")).joinRight // Result: Left("flower")
- * Left[String, Either[String, Int]]("flower").joinRight // Result: Left("flower")
- * }}}
+ * @example {{{
+ * Right[String, Either[String, Int]](Right(12)).joinRight // Result: Right(12)
+ * Right[String, Either[String, Int]](Left("flower")).joinRight // Result: Left("flower")
+ * Left[String, Either[String, Int]]("flower").joinRight // Result: Left("flower")
+ * }}}
*
* This method, and `joinLeft`, are analogous to `Option#flatten`
*/
@@ -172,51 +163,48 @@ sealed abstract class Either[+A, +B] extends Product with Serializable {
}
- /**
- * Joins an `Either` through `Left`.
+ /** Joins an `Either` through `Left`.
*
- * This method requires that the left side of this Either is itself an
- * Either type. That is, this must be some type like: {{{
- * Either[Either[C, B], B]
- * }}} (which respects the type parameter bounds, shown below.)
+ * This method requires that the left side of this `Either` is itself an
+ * `Either` type. That is, this must be some type like: {{{
+ * Either[Either[C, B], B]
+ * }}} (which respects the type parameter bounds, shown below.)
*
- * If this instance is a Left[Either[C, B]] then the contained Either[C, B]
- * will be returned, otherwise this value will be returned unmodified.
+ * If this instance is a `Left[Either[C, B]]` then the contained `Either[C, B]`
+ * will be returned, otherwise this value will be returned unmodified.
*
- * {{{
- * Left[Either[Int, String], String](Right("flower")).joinLeft // Result: Right("flower")
- * Left[Either[Int, String], String](Left(12)).joinLeft // Result: Left(12)
- * Right[Either[Int, String], String]("daisy").joinLeft // Result: Right("daisy")
- * }}}
+ * {{{
+ * Left[Either[Int, String], String](Right("flower")).joinLeft // Result: Right("flower")
+ * Left[Either[Int, String], String](Left(12)).joinLeft // Result: Left(12)
+ * Right[Either[Int, String], String]("daisy").joinLeft // Result: Right("daisy")
+ * }}}
*
- * This method, and `joinRight`, are analogous to `Option#flatten`
+ * This method, and `joinRight`, are analogous to `Option#flatten`.
*/
def joinLeft[A1 >: A, B1 >: B, C](implicit ev: A1 <:< Either[C, B1]): Either[C, B1] = this match {
case Left(a) => a
case Right(b) => this.asInstanceOf[Either[C, B1]]
}
- /**
- * Executes the given side-effecting function if this is a `Right`.
+ /** Executes the given side-effecting function if this is a `Right`.
*
- * {{{
- * Right(12).foreach(x => println(x)) // prints "12"
- * Left(12).foreach(x => println(x)) // doesn't print
- * }}}
- * @param f The side-effecting function to execute.
+ * {{{
+ * Right(12).foreach(println) // prints "12"
+ * Left(12).foreach(println) // doesn't print
+ * }}}
+ * @param f The side-effecting function to execute.
*/
def foreach[U](f: B => U): Unit = this match {
case Right(b) => f(b)
case Left(_) =>
}
- /**
- * Returns the value from this `Right` or the given argument if this is a `Left`.
+ /** Returns the value from this `Right` or the given argument if this is a `Left`.
*
- * {{{
- * Right(12).getOrElse(17) // 12
- * Left(12).getOrElse(17) // 17
- * }}}
+ * {{{
+ * Right(12).getOrElse(17) // 12
+ * Left(12).getOrElse(17) // 17
+ * }}}
*/
def getOrElse[BB >: B](or: => BB): BB = this match {
case Right(b) => b
@@ -233,7 +221,7 @@ sealed abstract class Either[+A, +B] extends Product with Serializable {
* // Returns false because value of Right is "something" which does not equal "anything".
* Right("something") contains "anything"
*
- * // Returns false because there is no value for Right.
+ * // Returns false because it's not a Right value.
* Left("something") contains "something"
* }}}
*
@@ -245,53 +233,49 @@ sealed abstract class Either[+A, +B] extends Product with Serializable {
case Left(_) => false
}
- /**
- * Returns `true` if `Left` or returns the result of the application of
- * the given predicate to the `Right` value.
+ /** Returns `true` if `Left` or returns the result of the application of
+ * the given predicate to the `Right` value.
*
- * {{{
- * Right(12).forall(_ > 10) // true
- * Right(7).forall(_ > 10) // false
- * Left(12).forall(_ > 10) // true
- * }}}
+ * {{{
+ * Right(12).forall(_ > 10) // true
+ * Right(7).forall(_ > 10) // false
+ * Left(12).forall(_ => false) // true
+ * }}}
*/
def forall(f: B => Boolean): Boolean = this match {
case Right(b) => f(b)
case Left(_) => true
}
- /**
- * Returns `false` if `Left` or returns the result of the application of
- * the given predicate to the `Right` value.
+ /** Returns `false` if `Left` or returns the result of the application of
+ * the given predicate to the `Right` value.
*
- * {{{
- * Right(12).exists(_ > 10) // true
- * Right(7).exists(_ > 10) // false
- * Left(12).exists(_ > 10) // false
- * }}}
+ * {{{
+ * Right(12).exists(_ > 10) // true
+ * Right(7).exists(_ > 10) // false
+ * Left(12).exists(_ => true) // false
+ * }}}
*/
def exists(p: B => Boolean): Boolean = this match {
case Right(b) => p(b)
case Left(_) => false
}
- /**
- * Binds the given function across `Right`.
+ /** Binds the given function across `Right`.
*
- * @param f The function to bind across `Right`.
+ * @param f The function to bind across `Right`.
*/
def flatMap[AA >: A, Y](f: B => Either[AA, Y]): Either[AA, Y] = this match {
case Right(b) => f(b)
case Left(a) => this.asInstanceOf[Either[AA, Y]]
}
- /**
- * The given function is applied if this is a `Right`.
+ /** The given function is applied if this is a `Right`.
*
- * {{{
- * Right(12).map(x => "flower") // Result: Right("flower")
- * Left(12).map(x => "flower") // Result: Left(12)
- * }}}
+ * {{{
+ * Right(12).map(x => "flower") // Result: Right("flower")
+ * Left(12).map(x => "flower") // Result: Left(12)
+ * }}}
*/
def map[Y](f: B => Y): Either[A, Y] = this match {
case Right(b) => Right(f(b))
@@ -303,9 +287,9 @@ sealed abstract class Either[+A, +B] extends Product with Serializable {
* returns `Left` with the existing value of `Left` if this is a `Left`.
*
* {{{
- * Right(12).filterOrElse(_ > 10, -1) // Right(12)
- * Right(7).filterOrElse(_ > 10, -1) // Left(-1)
- * Left(12).filterOrElse(_ > 10, -1) // Left(12)
+ * Right(12).filterOrElse(_ > 10, -1) // Right(12)
+ * Right(7).filterOrElse(_ > 10, -1) // Left(-1)
+ * Left(7).filterOrElse(_ => false, -1) // Left(7)
* }}}
*/
def filterOrElse[AA >: A](p: B => Boolean, zero: => AA): Either[AA, B] = this match {
@@ -344,32 +328,29 @@ sealed abstract class Either[+A, +B] extends Product with Serializable {
case Left(a) => Failure(a)
}
- /**
- * Returns `true` if this is a `Left`, `false` otherwise.
+ /** Returns `true` if this is a `Left`, `false` otherwise.
*
- * {{{
- * Left("tulip").isLeft // true
- * Right("venus fly-trap").isLeft // false
- * }}}
+ * {{{
+ * Left("tulip").isLeft // true
+ * Right("venus fly-trap").isLeft // false
+ * }}}
*/
def isLeft: Boolean
- /**
- * Returns `true` if this is a `Right`, `false` otherwise.
+ /** Returns `true` if this is a `Right`, `false` otherwise.
*
- * {{{
- * Left("tulip").isRight // false
- * Right("venus fly-trap").isRight // true
- * }}}
+ * {{{
+ * Left("tulip").isRight // false
+ * Right("venus fly-trap").isRight // true
+ * }}}
*/
def isRight: Boolean
}
-/**
- * The left side of the disjoint union, as opposed to the [[scala.util.Right]] side.
+/** The left side of the disjoint union, as opposed to the [[scala.util.Right]] side.
*
- * @author <a href="mailto:research@workingmouse.com">Tony Morris</a>, Workingmouse
- * @version 1.0, 11/10/2008
+ * @author <a href="mailto:research@workingmouse.com">Tony Morris</a>, Workingmouse
+ * @version 1.0, 11/10/2008
*/
final case class Left[+A, +B](@deprecatedName('a, "2.12.0") value: A) extends Either[A, B] {
def isLeft = true
@@ -378,11 +359,10 @@ final case class Left[+A, +B](@deprecatedName('a, "2.12.0") value: A) extends Ei
@deprecated("Use .value instead.", "2.12.0") def a: A = value
}
-/**
- * The right side of the disjoint union, as opposed to the [[scala.util.Left]] side.
+/** The right side of the disjoint union, as opposed to the [[scala.util.Left]] side.
*
- * @author <a href="mailto:research@workingmouse.com">Tony Morris</a>, Workingmouse
- * @version 1.0, 11/10/2008
+ * @author <a href="mailto:research@workingmouse.com">Tony Morris</a>, Workingmouse
+ * @version 1.0, 11/10/2008
*/
final case class Right[+A, +B](@deprecatedName('b, "2.12.0") value: B) extends Either[A, B] {
def isLeft = false
@@ -396,27 +376,26 @@ object Either {
/** If the condition is satisfied, return the given `B` in `Right`,
* otherwise, return the given `A` in `Left`.
*
- * {{{
- * val userInput: String = ...
- * Either.cond(
- * userInput.forall(_.isDigit) && userInput.size == 10,
- * PhoneNumber(userInput),
- * "The input (%s) does not look like a phone number".format(userInput)
- * }}}
+ * {{{
+ * val userInput: String = ...
+ * Either.cond(
+ * userInput.forall(_.isDigit) && userInput.size == 10,
+ * PhoneNumber(userInput),
+ * "The input (%s) does not look like a phone number".format(userInput)
+ * }}}
*/
def cond[X, Y](test: Boolean, right: => Y, left: => X): Either[X, Y] =
if (test) Right(right) else Left(left)
- /**
- * Allows use of a `merge` method to extract values from Either instances
- * regardless of whether they are Left or Right.
+ /** Allows use of a `merge` method to extract values from Either instances
+ * regardless of whether they are Left or Right.
*
- * {{{
- * val l = Left(List(1)): Either[List[Int], Vector[Int]]
- * val r = Right(Vector(1)): Either[List[Int], Vector[Int]]
- * l.merge: Seq[Int] // List(1)
- * r.merge: Seq[Int] // Vector(1)
- * }}}
+ * {{{
+ * val l = Left(List(1)): Either[List[Int], Vector[Int]]
+ * val r = Right(Vector(1)): Either[List[Int], Vector[Int]]
+ * l.merge: Seq[Int] // List(1)
+ * r.merge: Seq[Int] // Vector(1)
+ * }}}
*/
implicit class MergeableEither[A](private val x: Either[A, A]) extends AnyVal {
def merge: A = x match {
@@ -425,65 +404,58 @@ object Either {
}
}
- /**
- * Projects an `Either` into a `Left`.
- *
- * This allows for-comprehensions over the left side of Either instances,
- * reversing Either's usual right-bias.
+ /** Projects an `Either` into a `Left`.
*
- * For example {{{
- * for (s <- Left("flower").left) yield s.length // Left(6)
- * }}}
+ * This allows for-comprehensions over the left side of Either instances,
+ * reversing Either's usual right-bias.
*
- * Continuing the analogy with [[scala.Option]], a `LeftProjection` declares
- * that `Left` should be analogous to `Some` in some code.
+ * For example {{{
+ * for (s <- Left("flower").left) yield s.length // Left(6)
+ * }}}
*
- * {{{
- * // using Option:
- * def interactWithDB(x: Query): Option[Result] =
- * try {
- * Some(getResultFromDatabase(x))
- * } catch {
- * case ex => None
- * }
+ * Continuing the analogy with [[scala.Option]], a `LeftProjection` declares
+ * that `Left` should be analogous to `Some` in some code.
*
- * // this will only be executed if interactWithDB returns a Some
- * val report =
- * for (r <- interactWithDB(someQuery)) yield generateReport(r)
- * if (report.isDefined)
- * send(report)
- * else
- * log("report not generated, not sure why...")
- * }}}
+ * {{{
+ * // using Option:
+ * def interactWithDB(x: Query): Option[Result] =
+ * try Some(getResultFromDatabase(x))
+ * catch {
+ * case _: SQLException => None
+ * }
+ *
+ * // this will only be executed if interactWithDB returns a Some
+ * val report = for (result <- interactWithDB(someQuery)) yield generateReport(result)
+ * report match {
+ * case Some(r) => send(r)
+ * case None => log("report not generated, not sure why...")
+ * }}}
*
- * {{{
- * // using Either
- * def interactWithDB(x: Query): Either[Exception, Result] =
- * try {
- * Right(getResultFromDatabase(x))
- * } catch {
- * case ex => Left(ex)
+ * {{{
+ * // using Either
+ * def interactWithDB(x: Query): Either[Exception, Result] =
+ * try Right(getResultFromDatabase(x))
+ * catch {
+ * case e: SQLException => Left(e)
+ * }
+ *
+ * // this will only be executed if interactWithDB returns a Right
+ * val report = for (result <- interactWithDB(someQuery).right) yield generateReport(result)
+ * report match {
+ * case Right(r) => send(r)
+ * case Left(e) => log(s"report not generated, reason was $e")
* }
+ * }}}
*
- * // this will only be executed if interactWithDB returns a Right
- * val report =
- * for (r <- interactWithDB(someQuery).right) yield generateReport(r)
- * if (report.isRight)
- * send(report)
- * else
- * log("report not generated, reason was " + report.left.get)
- * }}}
- *
- * @author <a href="mailto:research@workingmouse.com">Tony Morris</a>, Workingmouse
- * @version 1.0, 11/10/2008
+ * @author <a href="mailto:research@workingmouse.com">Tony Morris</a>, Workingmouse
+ * @version 1.0, 11/10/2008
*/
final case class LeftProjection[+A, +B](e: Either[A, B]) {
- /**
- * Returns the value from this `Left` or throws `java.util.NoSuchElementException`
- * if this is a `Right`.
+ /** Returns the value from this `Left` or throws `java.util.NoSuchElementException`
+ * if this is a `Right`.
*
* {{{
- * Left(12).left.get // 12
+ * Left(12).left.get // 12
* Right(12).left.get // NoSuchElementException
* }}}
*
@@ -494,8 +466,7 @@ object Either {
case Right(_) => throw new NoSuchElementException("Either.left.get on Right")
}
- /**
- * Executes the given side-effecting function if this is a `Left`.
+ /** Executes the given side-effecting function if this is a `Left`.
*
* {{{
* Left(12).left.foreach(x => println(x)) // prints "12"
@@ -508,116 +479,105 @@ object Either {
case Right(_) =>
}
- /**
- * Returns the value from this `Left` or the given argument if this is a `Right`.
- *
- * {{{
- * Left(12).left.getOrElse(17) // 12
- * Right(12).left.getOrElse(17) // 17
- * }}}
+ /** Returns the value from this `Left` or the given argument if this is a `Right`.
*
+ * {{{
+ * Left(12).left.getOrElse(17) // 12
+ * Right(12).left.getOrElse(17) // 17
+ * }}}
*/
def getOrElse[AA >: A](or: => AA): AA = e match {
case Left(a) => a
case Right(_) => or
}
- /**
- * Returns `true` if `Right` or returns the result of the application of
- * the given function to the `Left` value.
- *
- * {{{
- * Left(12).left.forall(_ > 10) // true
- * Left(7).left.forall(_ > 10) // false
- * Right(12).left.forall(_ > 10) // true
- * }}}
+ /** Returns `true` if `Right` or returns the result of the application of
+ * the given function to the `Left` value.
*
+ * {{{
+ * Left(12).left.forall(_ > 10) // true
+ * Left(7).left.forall(_ > 10) // false
+ * Right(12).left.forall(_ > 10) // true
+ * }}}
*/
def forall(@deprecatedName('f) p: A => Boolean): Boolean = e match {
case Left(a) => p(a)
case Right(_) => true
}
- /**
- * Returns `false` if `Right` or returns the result of the application of
- * the given function to the `Left` value.
- *
- * {{{
- * Left(12).left.exists(_ > 10) // true
- * Left(7).left.exists(_ > 10) // false
- * Right(12).left.exists(_ > 10) // false
- * }}}
+ /** Returns `false` if `Right` or returns the result of the application of
+ * the given function to the `Left` value.
*
+ * {{{
+ * Left(12).left.exists(_ > 10) // true
+ * Left(7).left.exists(_ > 10) // false
+ * Right(12).left.exists(_ > 10) // false
+ * }}}
*/
def exists(@deprecatedName('f) p: A => Boolean): Boolean = e match {
case Left(a) => p(a)
case Right(_) => false
}
- /**
- * Binds the given function across `Left`.
+ /** Binds the given function across `Left`.
*
- * {{{
- * Left(12).left.flatMap(x => Left("scala")) // Left("scala")
- * Right(12).left.flatMap(x => Left("scala") // Right(12)
- * }}}
- * @param f The function to bind across `Left`.
+ * {{{
+ * Left(12).left.flatMap(x => Left("scala")) // Left("scala")
+ * Right(12).left.flatMap(x => Left("scala")) // Right(12)
+ * }}}
+ * @param f The function to bind across `Left`.
*/
def flatMap[BB >: B, X](f: A => Either[X, BB]): Either[X, BB] = e match {
case Left(a) => f(a)
case Right(b) => e.asInstanceOf[Either[X, BB]]
}
- /**
- * Maps the function argument through `Left`.
+ /** Maps the function argument through `Left`.
*
- * {{{
- * Left(12).left.map(_ + 2) // Left(14)
- * Right[Int, Int](12).left.map(_ + 2) // Right(12)
- * }}}
+ * {{{
+ * Left(12).left.map(_ + 2) // Left(14)
+ * Right[Int, Int](12).left.map(_ + 2) // Right(12)
+ * }}}
*/
def map[X](f: A => X): Either[X, B] = e match {
case Left(a) => Left(f(a))
case Right(b) => e.asInstanceOf[Either[X, B]]
}
- /**
- * Returns `None` if this is a `Right` or if the given predicate
- * `p` does not hold for the left value, otherwise, returns a `Left`.
+ /** Returns `None` if this is a `Right` or if the given predicate
+ * `p` does not hold for the left value, otherwise, returns a `Left`.
*
- * {{{
- * Left(12).left.filter(_ > 10) // Some(Left(12))
- * Left(7).left.filter(_ > 10) // None
- * Right(12).left.filter(_ > 10) // None
- * }}}
+ * {{{
+ * Left(12).left.filter(_ > 10) // Some(Left(12))
+ * Left(7).left.filter(_ > 10) // None
+ * Right(12).left.filter(_ > 10) // None
+ * }}}
*/
def filter[Y](p: A => Boolean): Option[Either[A, Y]] = e match {
case Left(a) => if(p(a)) Some(Left(a)) else None
case Right(b) => None
}
- /**
- * Returns a `Seq` containing the `Left` value if it exists or an empty
- * `Seq` if this is a `Right`.
+ /** Returns a `Seq` containing the `Left` value if it exists or an empty
+ * `Seq` if this is a `Right`.
*
- * {{{
- * Left(12).left.toSeq // Seq(12)
- * Right(12).left.toSeq // Seq()
- * }}}
+ * {{{
+ * Left(12).left.toSeq // Seq(12)
+ * Right(12).left.toSeq // Seq()
+ * }}}
*/
def toSeq: Seq[A] = e match {
case Left(a) => Seq(a)
case Right(_) => Seq.empty
}
- /**
- * Returns a `Some` containing the `Left` value if it exists or a
- * `None` if this is a `Right`.
+ /** Returns a `Some` containing the `Left` value if it exists or a
+ * `None` if this is a `Right`.
*
- * {{{
- * Left(12).left.toOption // Some(12)
- * Right(12).left.toOption // None
- * }}}
+ * {{{
+ * Left(12).left.toOption // Some(12)
+ * Right(12).left.toOption // None
+ * }}}
*/
def toOption: Option[A] = e match {
case Left(a) => Some(a)
@@ -625,26 +585,24 @@ object Either {
}
}
- /**
- * Projects an `Either` into a `Right`.
+ /** Projects an `Either` into a `Right`.
*
- * Because `Either` is already right-biased, this class is not normally needed.
- * (It is retained in the library for now for easy cross-compilation between Scala
- * 2.11 and 2.12.)
+ * Because `Either` is already right-biased, this class is not normally needed.
+ * (It is retained in the library for now for easy cross-compilation between Scala
+ * 2.11 and 2.12.)
*
- * @author <a href="mailto:research@workingmouse.com">Tony Morris</a>, Workingmouse
- * @version 1.0, 11/10/2008
+ * @author <a href="mailto:research@workingmouse.com">Tony Morris</a>, Workingmouse
+ * @version 1.0, 11/10/2008
*/
final case class RightProjection[+A, +B](e: Either[A, B]) {
- /**
- * Returns the value from this `Right` or throws
- * `java.util.NoSuchElementException` if this is a `Left`.
+ /** Returns the value from this `Right` or throws
+ * `java.util.NoSuchElementException` if this is a `Left`.
*
- * {{{
- * Right(12).right.get // 12
- * Left(12).right.get // NoSuchElementException
- * }}}
+ * {{{
+ * Right(12).right.get // 12
+ * Left(12).right.get // NoSuchElementException
+ * }}}
*
* @throws java.util.NoSuchElementException if the projection is `Left`.
*/
@@ -653,80 +611,74 @@ object Either {
case Left(_) => throw new NoSuchElementException("Either.right.get on Left")
}
- /**
- * Executes the given side-effecting function if this is a `Right`.
+ /** Executes the given side-effecting function if this is a `Right`.
*
- * {{{
- * Right(12).right.foreach(x => println(x)) // prints "12"
- * Left(12).right.foreach(x => println(x)) // doesn't print
- * }}}
- * @param f The side-effecting function to execute.
+ * {{{
+ * Right(12).right.foreach(x => println(x)) // prints "12"
+ * Left(12).right.foreach(x => println(x)) // doesn't print
+ * }}}
+ * @param f The side-effecting function to execute.
*/
def foreach[U](f: B => U): Unit = e match {
case Right(b) => f(b)
case Left(_) =>
}
- /**
- * Returns the value from this `Right` or the given argument if this is a `Left`.
+ /** Returns the value from this `Right` or the given argument if this is a `Left`.
*
- * {{{
- * Right(12).right.getOrElse(17) // 12
- * Left(12).right.getOrElse(17) // 17
- * }}}
+ * {{{
+ * Right(12).right.getOrElse(17) // 12
+ * Left(12).right.getOrElse(17) // 17
+ * }}}
*/
def getOrElse[BB >: B](or: => BB): BB = e match {
case Right(b) => b
case Left(_) => or
}
- /**
- * Returns `true` if `Left` or returns the result of the application of
- * the given function to the `Right` value.
+ /** Returns `true` if `Left` or returns the result of the application of
+ * the given function to the `Right` value.
*
- * {{{
- * Right(12).right.forall(_ > 10) // true
- * Right(7).right.forall(_ > 10) // false
- * Left(12).right.forall(_ > 10) // true
- * }}}
+ * {{{
+ * Right(12).right.forall(_ > 10) // true
+ * Right(7).right.forall(_ > 10) // false
+ * Left(12).right.forall(_ > 10) // true
+ * }}}
*/
def forall(f: B => Boolean): Boolean = e match {
case Right(b) => f(b)
case Left(_) => true
}
- /**
- * Returns `false` if `Left` or returns the result of the application of
- * the given function to the `Right` value.
+ /** Returns `false` if `Left` or returns the result of the application of
+ * the given function to the `Right` value.
*
- * {{{
- * Right(12).right.exists(_ > 10) // true
- * Right(7).right.exists(_ > 10) // false
- * Left(12).right.exists(_ > 10) // false
- * }}}
+ * {{{
+ * Right(12).right.exists(_ > 10) // true
+ * Right(7).right.exists(_ > 10) // false
+ * Left(12).right.exists(_ > 10) // false
+ * }}}
*/
def exists(@deprecatedName('f) p: B => Boolean): Boolean = e match {
case Right(b) => p(b)
case Left(_) => false
}
- /**
- * Binds the given function across `Right`.
+ /** Binds the given function across `Right`.
*
- * @param f The function to bind across `Right`.
+ * @param f The function to bind across `Right`.
*/
def flatMap[AA >: A, Y](f: B => Either[AA, Y]): Either[AA, Y] = e match {
case Right(b) => f(b)
case Left(a) => e.asInstanceOf[Either[AA, Y]]
}
- /**
- * The given function is applied if this is a `Right`.
+ /** The given function is applied if this is a `Right`.
*
- * {{{
- * Right(12).right.map(x => "flower") // Result: Right("flower")
- * Left(12).right.map(x => "flower") // Result: Left(12)
- * }}}
+ * {{{
+ * Right(12).right.map(x => "flower") // Result: Right("flower")
+ * Left(12).right.map(x => "flower") // Result: Left(12)
+ * }}}
*/
def map[Y](f: B => Y): Either[A, Y] = e match {
case Right(b) => Right(f(b))
diff --git a/src/library/scala/util/Properties.scala b/src/library/scala/util/Properties.scala
index 29a635fcbe..101a6437ec 100644
--- a/src/library/scala/util/Properties.scala
+++ b/src/library/scala/util/Properties.scala
@@ -105,7 +105,7 @@ private[scala] trait PropertiesTrait {
* or "version (unknown)" if it cannot be determined.
*/
val versionString = "version " + scalaPropOrElse("version.number", "(unknown)")
- val copyrightString = scalaPropOrElse("copyright.string", "Copyright 2002-2016, LAMP/EPFL and Lightbend, Inc.")
+ val copyrightString = scalaPropOrElse("copyright.string", "Copyright 2002-2017, LAMP/EPFL and Lightbend, Inc.")
/** This is the encoding to use reading in source files, overridden with -encoding.
* Note that it uses "prop" i.e. looks in the scala jar, not the system properties.
diff --git a/src/library/scala/util/matching/Regex.scala b/src/library/scala/util/matching/Regex.scala
index ea9f02f85b..4822fe02b4 100644
--- a/src/library/scala/util/matching/Regex.scala
+++ b/src/library/scala/util/matching/Regex.scala
@@ -41,11 +41,13 @@ import java.util.regex.{ Pattern, Matcher }
* implicitly for strings:
*
* {{{
- * val date = """(\d\d\d\d)-(\d\d)-(\d\d)""".r
+ * val date = raw"(\d{4})-(\d{2})-(\d{2})".r
* }}}
*
* Since escapes are not processed in multi-line string literals, using triple quotes
* avoids having to escape the backslash character, so that `"\\d"` can be written `"""\d"""`.
+ * The same result is achieved with certain interpolators, such as `raw"\d".r` or
+ * a custom interpolator `r"\d"` that also compiles the `Regex`.
*
* === Extraction ===
* To extract the capturing groups when a `Regex` is matched, use it as
@@ -116,29 +118,41 @@ import java.util.regex.{ Pattern, Matcher }
* while (mi.hasNext) {
* val d = mi.next
* if (mi.group(1).toInt < 1960) println(s"$d: An oldie but goodie.")
+ * }
* }}}
*
- * Note that `findAllIn` finds matches that don't overlap. (See [[findAllIn]] for more examples.)
+ * Although the `MatchIterator` returned by `findAllIn` is used like any `Iterator`,
+ * with alternating calls to `hasNext` and `next`, `hasNext` has the additional
+ * side effect of advancing the underlying matcher to the next unconsumed match.
+ * This effect is visible in the `MatchData` representing the "current match".
*
* {{{
- * val num = """(\d+)""".r
- * val all = num.findAllIn("123").toList // List("123"), not List("123", "23", "3")
+ * val r = "(ab+c)".r
+ * val s = "xxxabcyyyabbczzz"
+ * r.findAllIn(s).start // 3
+ * val mi = r.findAllIn(s)
+ * mi.hasNext // true
+ * mi.start // 3
+ * mi.next() // "abc"
+ * mi.start // 3
+ * mi.hasNext // true
+ * mi.start // 9
+ * mi.next() // "abbc"
* }}}
*
- * Also, the "current match" of a `MatchIterator` may be advanced by either `hasNext` or `next`.
- * By comparison, the `Iterator[Match]` returned by `findAllMatchIn` or `findAllIn.matchData`
- * produces `Match` objects that remain valid after the iterator is advanced.
+ * The example shows that methods on `MatchData` such as `start` will advance to
+ * the first match, if necessary. It also shows that `hasNext` will advance to
+ * the next unconsumed match, if `next` has already returned the current match.
+ *
+ * The current `MatchData` can be captured using the `matchData` method.
+ * Alternatively, `findAllMatchIn` returns an `Iterator[Match]`, where there
+ * is no interaction between the iterator and `Match` objects it has already produced.
+ *
+ * Note that `findAllIn` finds matches that don't overlap. (See [[findAllIn]] for more examples.)
*
* {{{
- * val ns = num.findAllIn("1 2 3")
- * ns.start // 0
- * ns.hasNext // true
- * ns.start // 2
- * val ms = num.findAllMatchIn("1 2 3")
- * val m = ms.next()
- * m.start // 0
- * ms.hasNext // true
- * m.start // still 0
+ * val num = raw"(\d+)".r
+ * val all = num.findAllIn("123").toList // List("123"), not List("123", "23", "3")
* }}}
*
* === Replace Text ===
diff --git a/src/partest-extras/scala/tools/partest/StubErrorMessageTest.scala b/src/partest-extras/scala/tools/partest/StubErrorMessageTest.scala
new file mode 100644
index 0000000000..f713b79e75
--- /dev/null
+++ b/src/partest-extras/scala/tools/partest/StubErrorMessageTest.scala
@@ -0,0 +1,47 @@
+package scala.tools.partest
+
+trait StubErrorMessageTest extends StoreReporterDirectTest {
+ // Stub to feed to partest, unused
+ def code = throw new Error("Use `userCode` instead of `code`.")
+
+ val classpath = List(sys.props("partest.lib"), testOutput.path)
+ .mkString(sys.props("path.separator"))
+
+ def compileCode(codes: String*) = {
+ val global = newCompiler("-cp", classpath, "-d", testOutput.path)
+ val sourceFiles = newSources(codes: _*)
+ withRun(global)(_ compileSources sourceFiles)
+ }
+
+ def removeClasses(inPackage: String, classNames: Seq[String]): Unit = {
+ val pkg = new File(testOutput.path, inPackage)
+ classNames.foreach { className =>
+ val classFile = new File(pkg, s"$className.class")
+ assert(classFile.exists)
+ assert(classFile.delete())
+ }
+ }
+
+ def removeFromClasspath(): Unit
+ def codeA: String
+ def codeB: String
+ def userCode: String
+ def extraUserCode: String = ""
+
+ def show(): Unit = {
+ compileCode(codeA)
+ assert(filteredInfos.isEmpty, filteredInfos)
+
+ compileCode(codeB)
+ assert(filteredInfos.isEmpty, filteredInfos)
+ removeFromClasspath()
+
+ if (extraUserCode == "") compileCode(userCode)
+ else compileCode(userCode, extraUserCode)
+ import scala.reflect.internal.util.Position
+ filteredInfos.map { report =>
+ print(if (report.severity == storeReporter.ERROR) "error: " else "")
+ println(Position.formatMessage(report.pos, report.msg, true))
+ }
+ }
+}
diff --git a/src/reflect/scala/reflect/internal/Depth.scala b/src/reflect/scala/reflect/internal/Depth.scala
index a330e0accb..5e7202f8bf 100644
--- a/src/reflect/scala/reflect/internal/Depth.scala
+++ b/src/reflect/scala/reflect/internal/Depth.scala
@@ -5,7 +5,7 @@ package internal
import Depth._
final class Depth private (val depth: Int) extends AnyVal with Ordered[Depth] {
- def max(that: Depth): Depth = if (this < that) that else this
+ def max(that: Depth): Depth = if (this.depth < that.depth) that else this
def decr(n: Int): Depth = if (isAnyDepth) this else Depth(depth - n)
def incr(n: Int): Depth = if (isAnyDepth) this else Depth(depth + n)
def decr: Depth = decr(1)
diff --git a/src/reflect/scala/reflect/internal/Symbols.scala b/src/reflect/scala/reflect/internal/Symbols.scala
index 9d71136fc5..854849d27c 100644
--- a/src/reflect/scala/reflect/internal/Symbols.scala
+++ b/src/reflect/scala/reflect/internal/Symbols.scala
@@ -193,6 +193,15 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
private[reflect] case class SymbolKind(accurate: String, sanitized: String, abbreviation: String)
+ protected def newStubSymbol(owner: Symbol,
+ name: Name,
+ missingMessage: String): Symbol = {
+ name match {
+ case n: TypeName => new StubClassSymbol(owner, n, missingMessage)
+ case _ => new StubTermSymbol(owner, name.toTermName, missingMessage)
+ }
+ }
+
/** The class for all symbols */
abstract class Symbol protected[Symbols] (initOwner: Symbol, initPos: Position, initName: Name)
extends SymbolContextApiImpl
@@ -504,9 +513,9 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
* failure to the point when that name is used for something, which is
* often to the point of never.
*/
- def newStubSymbol(name: Name, missingMessage: String, isPackage: Boolean = false): Symbol = name match {
- case n: TypeName => new StubClassSymbol(this, n, missingMessage)
- case _ => new StubTermSymbol(this, name.toTermName, missingMessage)
+ def newStubSymbol(name: Name, missingMessage: String): Symbol = {
+ // Invoke the overriden `newStubSymbol` in Global that gives us access to typer
+ Symbols.this.newStubSymbol(this, name, missingMessage)
}
/** Given a field, construct a term symbol that represents the source construct that gave rise the field */
@@ -3427,7 +3436,7 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
private def fail[T](alt: T): T = {
// Avoid issuing lots of redundant errors
if (!hasFlag(IS_ERROR)) {
- globalError(missingMessage)
+ globalError(pos, missingMessage)
if (settings.debug.value)
(new Throwable).printStackTrace
diff --git a/src/reflect/scala/reflect/internal/pickling/UnPickler.scala b/src/reflect/scala/reflect/internal/pickling/UnPickler.scala
index b4152c9b8c..16fbab7103 100644
--- a/src/reflect/scala/reflect/internal/pickling/UnPickler.scala
+++ b/src/reflect/scala/reflect/internal/pickling/UnPickler.scala
@@ -246,14 +246,15 @@ abstract class UnPickler {
adjust(mirrorThatLoaded(owner).missingHook(owner, name)) orElse {
// (4) Create a stub symbol to defer hard failure a little longer.
val advice = moduleAdvice(s"${owner.fullName}.$name")
+ val lazyCompletingSymbol = completingStack.headOption.getOrElse(NoSymbol)
val missingMessage =
- s"""|missing or invalid dependency detected while loading class file '$filename'.
- |Could not access ${name.longString} in ${owner.kindString} ${owner.fullName},
- |because it (or its dependencies) are missing. Check your build definition for
- |missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
+ s"""|Symbol '${name.nameKind} ${owner.fullName}.$name' is missing from the classpath.
+ |This symbol is required by '${lazyCompletingSymbol.kindString} ${lazyCompletingSymbol.fullName}'.
+ |Make sure that ${name.longString} is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
|A full rebuild may help if '$filename' was compiled against an incompatible version of ${owner.fullName}.$advice""".stripMargin
val stubName = if (tag == EXTref) name else name.toTypeName
- owner.newStubSymbol(stubName, missingMessage)
+ // The position of the error message is set by `newStubSymbol`
+ NoSymbol.newStubSymbol(stubName, missingMessage)
}
}
}
@@ -696,11 +697,18 @@ abstract class UnPickler {
new TypeError(e.msg)
}
+ /** Keep track of the symbols pending to be initialized.
+ *
+ * Useful for reporting on stub errors and cyclic errors.
+ */
+ private var completingStack = List.empty[Symbol]
+
/** A lazy type which when completed returns type at index `i`. */
private class LazyTypeRef(i: Int) extends LazyType with FlagAgnosticCompleter {
private val definedAtRunId = currentRunId
private val p = phase
protected def completeInternal(sym: Symbol) : Unit = try {
+ completingStack = sym :: completingStack
val tp = at(i, () => readType(sym.isTerm)) // after NMT_TRANSITION, revert `() => readType(sym.isTerm)` to `readType`
// This is a temporary fix allowing to read classes generated by an older, buggy pickler.
@@ -723,7 +731,10 @@ abstract class UnPickler {
}
catch {
case e: MissingRequirementError => throw toTypeError(e)
+ } finally {
+ completingStack = completingStack.tail
}
+
override def complete(sym: Symbol) : Unit = {
completeInternal(sym)
if (!isCompilerUniverse) markAllCompleted(sym)
diff --git a/src/reflect/scala/reflect/internal/tpe/FindMembers.scala b/src/reflect/scala/reflect/internal/tpe/FindMembers.scala
index 6ba48cb44d..510d76793e 100644
--- a/src/reflect/scala/reflect/internal/tpe/FindMembers.scala
+++ b/src/reflect/scala/reflect/internal/tpe/FindMembers.scala
@@ -285,4 +285,18 @@ trait FindMembers {
initBaseClasses.head.newOverloaded(tpe, members)
}
}
+
+ private[scala] final class HasMember(tpe: Type, name: Name, excludedFlags: Long, requiredFlags: Long) extends FindMemberBase[Boolean](tpe, name, excludedFlags, requiredFlags) {
+ private[this] var _result = false
+ override protected def result: Boolean = _result
+
+ protected def shortCircuit(sym: Symbol): Boolean = {
+ _result = true
+ true // prevents call to addMemberIfNew
+ }
+
+ // Not used
+ protected def addMemberIfNew(sym: Symbol): Unit = {}
+ }
+
}
diff --git a/src/reflect/scala/reflect/internal/transform/RefChecks.scala b/src/reflect/scala/reflect/internal/transform/RefChecks.scala
deleted file mode 100644
index e69de29bb2..0000000000
--- a/src/reflect/scala/reflect/internal/transform/RefChecks.scala
+++ /dev/null
diff --git a/src/reflect/scala/reflect/io/ZipArchive.scala b/src/reflect/scala/reflect/io/ZipArchive.scala
index 262ab22ce9..f4e1633af4 100644
--- a/src/reflect/scala/reflect/io/ZipArchive.scala
+++ b/src/reflect/scala/reflect/io/ZipArchive.scala
@@ -27,6 +27,8 @@ import scala.annotation.tailrec
* ''Note: This library is considered experimental and should not be used unless you know what you are doing.''
*/
object ZipArchive {
+ private[io] val closeZipFile = sys.props.get("scala.classpath.closeZip").map(_.toBoolean).getOrElse(false)
+
/**
* @param file a File
* @return A ZipArchive if `file` is a readable zip file, otherwise null.
@@ -120,31 +122,69 @@ abstract class ZipArchive(override val file: JFile) extends AbstractFile with Eq
}
/** ''Note: This library is considered experimental and should not be used unless you know what you are doing.'' */
final class FileZipArchive(file: JFile) extends ZipArchive(file) {
+ private[this] def openZipFile(): ZipFile = try {
+ new ZipFile(file)
+ } catch {
+ case ioe: IOException => throw new IOException("Error accessing " + file.getPath, ioe)
+ }
+
+ private[this] class LazyEntry(
+ name: String,
+ time: Long,
+ size: Int
+ ) extends Entry(name) {
+ override def lastModified: Long = time // could be stale
+ override def input: InputStream = {
+ val zipFile = openZipFile()
+ val entry = zipFile.getEntry(name)
+ val delegate = zipFile.getInputStream(entry)
+ new FilterInputStream(delegate) {
+ override def close(): Unit = { zipFile.close() }
+ }
+ }
+ override def sizeOption: Option[Int] = Some(size) // could be stale
+ }
+
+ // keeps a file handle open to ZipFile, which forbids file mutation
+ // on Windows, and leaks memory on all OS (typically by stopping
+ // classloaders from being garbage collected). But is slightly
+ // faster than LazyEntry.
+ private[this] class LeakyEntry(
+ zipFile: ZipFile,
+ zipEntry: ZipEntry
+ ) extends Entry(zipEntry.getName) {
+ override def lastModified: Long = zipEntry.getTime
+ override def input: InputStream = zipFile.getInputStream(zipEntry)
+ override def sizeOption: Option[Int] = Some(zipEntry.getSize.toInt)
+ }
+
lazy val (root, allDirs) = {
val root = new DirEntry("/")
val dirs = mutable.HashMap[String, DirEntry]("/" -> root)
- val zipFile = try {
- new ZipFile(file)
- } catch {
- case ioe: IOException => throw new IOException("Error accessing " + file.getPath, ioe)
- }
-
+ val zipFile = openZipFile()
val enum = zipFile.entries()
- while (enum.hasMoreElements) {
- val zipEntry = enum.nextElement
- val dir = getDir(dirs, zipEntry)
- if (zipEntry.isDirectory) dir
- else {
- class FileEntry() extends Entry(zipEntry.getName) {
- override def getArchive = zipFile
- override def lastModified = zipEntry.getTime()
- override def input = getArchive getInputStream zipEntry
- override def sizeOption = Some(zipEntry.getSize().toInt)
+ try {
+ while (enum.hasMoreElements) {
+ val zipEntry = enum.nextElement
+ val dir = getDir(dirs, zipEntry)
+ if (zipEntry.isDirectory) dir
+ else {
+ val f =
+ if (ZipArchive.closeZipFile)
+ new LazyEntry(
+ zipEntry.getName(),
+ zipEntry.getTime(),
+ zipEntry.getSize().toInt
+ )
+ else
+ new LeakyEntry(zipFile, zipEntry)
+
+ dir.entries(f.name) = f
}
- val f = new FileEntry()
- dir.entries(f.name) = f
}
+ } finally {
+ if (ZipArchive.closeZipFile) zipFile.close()
}
(root, dirs)
}
diff --git a/src/reflect/scala/reflect/runtime/JavaUniverseForce.scala b/src/reflect/scala/reflect/runtime/JavaUniverseForce.scala
index 7aa3b113dd..b455a08036 100644
--- a/src/reflect/scala/reflect/runtime/JavaUniverseForce.scala
+++ b/src/reflect/scala/reflect/runtime/JavaUniverseForce.scala
@@ -460,8 +460,8 @@ trait JavaUniverseForce { self: runtime.JavaUniverse =>
definitions.DoubleTpe
definitions.BooleanTpe
definitions.ScalaNumericValueClasses
- definitions.ScalaValueClasses
definitions.ScalaValueClassesNoUnit
+ definitions.ScalaValueClasses
uncurry.VarargsSymbolAttachment
uncurry.DesugaredParameterType
diff --git a/src/repl/scala/tools/nsc/interpreter/ILoop.scala b/src/repl/scala/tools/nsc/interpreter/ILoop.scala
index cd263a26f6..a729ea4f5f 100644
--- a/src/repl/scala/tools/nsc/interpreter/ILoop.scala
+++ b/src/repl/scala/tools/nsc/interpreter/ILoop.scala
@@ -768,7 +768,7 @@ class ILoop(in0: Option[BufferedReader], protected val out: JPrintWriter)
result
}
- private object paste extends Pasted(prompt) {
+ private object paste extends Pasted(replProps.promptText) {
def interpret(line: String) = intp interpret line
def echo(message: String) = ILoop.this echo message
diff --git a/src/repl/scala/tools/nsc/interpreter/Pasted.scala b/src/repl/scala/tools/nsc/interpreter/Pasted.scala
index 3a7eda1b77..7ab5e5bb42 100644
--- a/src/repl/scala/tools/nsc/interpreter/Pasted.scala
+++ b/src/repl/scala/tools/nsc/interpreter/Pasted.scala
@@ -38,10 +38,9 @@ abstract class Pasted(prompt: String) {
def matchesContinue(line: String) = matchesString(line, ContinueString)
def running = isRunning
- private def matchesString(line: String, target: String): Boolean = (
- (line startsWith target) ||
- (line.nonEmpty && spacey(line.head) && matchesString(line.tail, target))
- )
+ private def matchesString(line: String, target: String): Boolean =
+ line.startsWith(target) || (line.nonEmpty && spacey(line.head) && matchesString(line.tail, target))
+
private def stripString(line: String, target: String) = line indexOf target match {
case -1 => line
case idx => line drop (idx + target.length)
diff --git a/src/scaladoc/scala/tools/nsc/doc/html/page/Entity.scala b/src/scaladoc/scala/tools/nsc/doc/html/page/Entity.scala
index fb2bf5049f..7232892d52 100644
--- a/src/scaladoc/scala/tools/nsc/doc/html/page/Entity.scala
+++ b/src/scaladoc/scala/tools/nsc/doc/html/page/Entity.scala
@@ -396,7 +396,7 @@ trait EntityPage extends HtmlPage {
{
if (Set("epfl", "EPFL").contains(tpl.universe.settings.docfooter.value))
- <div id="footer">Scala programming documentation. Copyright (c) 2003-2016 <a href="http://www.epfl.ch" target="_top">EPFL</a>, with contributions from <a href="http://www.lightbend.com" target="_top">Lightbend</a>.</div>
+ <div id="footer">Scala programming documentation. Copyright (c) 2003-2017 <a href="http://www.epfl.ch" target="_top">EPFL</a>, with contributions from <a href="http://www.lightbend.com" target="_top">Lightbend</a>.</div>
else
<div id="footer"> { tpl.universe.settings.docfooter.value } </div>
}
diff --git a/src/scalap/decoder.properties b/src/scalap/decoder.properties
index 9bb8d130ea..0bff4c81d4 100644
--- a/src/scalap/decoder.properties
+++ b/src/scalap/decoder.properties
@@ -1,2 +1,2 @@
version.number=2.0.1
-copyright.string=(c) 2002-2016 LAMP/EPFL
+copyright.string=(c) 2002-2017 LAMP/EPFL
diff --git a/src/scalap/scala/tools/scalap/Classfile.scala b/src/scalap/scala/tools/scalap/Classfile.scala
index f62df285f9..9549097ca6 100644
--- a/src/scalap/scala/tools/scalap/Classfile.scala
+++ b/src/scalap/scala/tools/scalap/Classfile.scala
@@ -79,6 +79,9 @@ class Classfile(in: ByteArrayReader) {
case class DoubleConst(x: Double) extends PoolEntry(CONSTANT_DOUBLE)
case class NameAndType(nameId: Int, typeId: Int) extends PoolEntry(CONSTANT_NAMEANDTYPE)
case object Empty extends PoolEntry(0) { }
+ case class MethodHandle(kindId: Int, refId: Int) extends PoolEntry(CONSTANT_METHODHANDLE)
+ case class InvokeDynamic(bootMethodId: Int, nameTypeId: Int) extends PoolEntry(CONSTANT_INVDYNAMIC)
+ case class MethodType(descId: Int) extends PoolEntry(CONSTANT_METHODTYPE)
val entries = {
val pool = new Array[PoolEntry](in.nextChar.toInt)
@@ -102,6 +105,9 @@ class Classfile(in: ByteArrayReader) {
case CONSTANT_NAMEANDTYPE => NameAndType(in.nextChar, in.nextChar)
case CONSTANT_INTEGER => IntegerConst(in.nextInt)
case CONSTANT_FLOAT => FloatConst(in.nextFloat)
+ case CONSTANT_METHODHANDLE => MethodHandle(in.nextByte, in.nextChar)
+ case CONSTANT_METHODTYPE => MethodType(in.nextChar)
+ case CONSTANT_INVDYNAMIC => InvokeDynamic(in.nextChar, in.nextChar)
}
i += 1
diff --git a/src/scalap/scala/tools/scalap/Classfiles.scala b/src/scalap/scala/tools/scalap/Classfiles.scala
index 9295dd7aff..c228b747c8 100644
--- a/src/scalap/scala/tools/scalap/Classfiles.scala
+++ b/src/scalap/scala/tools/scalap/Classfiles.scala
@@ -26,6 +26,9 @@ object Classfiles {
final val CONSTANT_METHODREF = 10
final val CONSTANT_INTFMETHODREF = 11
final val CONSTANT_NAMEANDTYPE = 12
+ final val CONSTANT_METHODHANDLE = 15
+ final val CONSTANT_METHODTYPE = 16
+ final val CONSTANT_INVDYNAMIC = 18
final val constantTagToString = Map(
CONSTANT_UTF8 -> "UTF8",
@@ -39,7 +42,10 @@ object Classfiles {
CONSTANT_FIELDREF -> "Field",
CONSTANT_METHODREF -> "Method",
CONSTANT_INTFMETHODREF -> "InterfaceMethod",
- CONSTANT_NAMEANDTYPE -> "NameAndType"
+ CONSTANT_NAMEANDTYPE -> "NameAndType",
+ CONSTANT_METHODHANDLE -> "MethodHandle",
+ CONSTANT_METHODTYPE -> "MethodType",
+ CONSTANT_INVDYNAMIC -> "InvokeDynamic"
)
}
diff --git a/test/benchmarks/project/plugins.sbt b/test/benchmarks/project/plugins.sbt
index 1b79ce888c..c84ff56c03 100644
--- a/test/benchmarks/project/plugins.sbt
+++ b/test/benchmarks/project/plugins.sbt
@@ -1,2 +1,2 @@
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")
-addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.2.17")
+addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.2.21")
diff --git a/test/benchmarks/src/main/scala/scala/collection/immutable/ListBenchmark.scala b/test/benchmarks/src/main/scala/scala/collection/immutable/ListBenchmark.scala
index 94844dcae2..36e2518993 100644
--- a/test/benchmarks/src/main/scala/scala/collection/immutable/ListBenchmark.scala
+++ b/test/benchmarks/src/main/scala/scala/collection/immutable/ListBenchmark.scala
@@ -23,12 +23,14 @@ class ListBenchmark {
var values: List[Content] = _
var mid: Content = _
var last: Content = _
+ var replacement: Content = _
@Setup(Level.Trial) def initKeys(): Unit = {
values = List.tabulate(size)(v => Content(v))
mid = Content(size / 2)
last = Content(Math.max(0,size -1))
+ replacement = Content(size * 2 + 1)
}
@Benchmark def filter_includeAll: Any = {
@@ -55,18 +57,14 @@ class ListBenchmark {
values.filter(v => v.value == last.value)
}
- @Setup(Level.Trial) def initKeys(): Unit = {
- values = List.tabulate(size)(n => if (n == size / 2) "mid" else "")
- }
-
@Benchmark def mapConserve_identity: Any = {
values.mapConserve(x => x)
}
@Benchmark def mapConserve_modifyAll: Any = {
- values.mapConserve(x => "replace")
+ values.mapConserve(x => replacement)
}
@Benchmark def mapConserve_modifyMid: Any = {
- values.mapConserve(x => if (x == "mid") "replace" else x)
+ values.mapConserve(x => if (x == mid) replacement else x)
}
}
diff --git a/test/benchmarks/src/main/scala/scala/collection/immutable/MapBenchmark.scala b/test/benchmarks/src/main/scala/scala/collection/immutable/MapBenchmark.scala
new file mode 100644
index 0000000000..a0358d6a1a
--- /dev/null
+++ b/test/benchmarks/src/main/scala/scala/collection/immutable/MapBenchmark.scala
@@ -0,0 +1,29 @@
+package scala.collection.immutable
+
+import java.util.concurrent.TimeUnit
+
+import org.openjdk.jmh.annotations._
+import org.openjdk.jmh.infra._
+
+@BenchmarkMode(Array(Mode.AverageTime))
+@Fork(2)
+@Threads(1)
+@Warmup(iterations = 10)
+@Measurement(iterations = 10)
+@OutputTimeUnit(TimeUnit.NANOSECONDS)
+@State(Scope.Benchmark)
+class MapBenchmark {
+
+ var base: Map[String,String] = _
+
+
+ @Setup(Level.Trial) def initKeys(): Unit = {
+ base = Map("a" -> "a", "b" -> "b", "c" -> "c", "d" -> "d")
+ }
+
+ // immutable map is implemented as EmptyMap -> Map1 -> Map2 -> Map3 -> Map4 -> Hashmap
+ // add an extra entry to Map4 causes a lot of work, benchmark the transition
+ @Benchmark def map4AddElement(bh: Blackhole): Unit = {
+ bh.consume(base.updated("e", "e"))
+ }
+}
diff --git a/test/benchmarks/src/main/scala/scala/collection/immutable/SetBenchmark.scala b/test/benchmarks/src/main/scala/scala/collection/immutable/SetBenchmark.scala
new file mode 100644
index 0000000000..9330626691
--- /dev/null
+++ b/test/benchmarks/src/main/scala/scala/collection/immutable/SetBenchmark.scala
@@ -0,0 +1,29 @@
+package scala.collection.immutable
+
+import java.util.concurrent.TimeUnit
+
+import org.openjdk.jmh.annotations._
+import org.openjdk.jmh.infra._
+
+@BenchmarkMode(Array(Mode.AverageTime))
+@Fork(2)
+@Threads(1)
+@Warmup(iterations = 10)
+@Measurement(iterations = 10)
+@OutputTimeUnit(TimeUnit.NANOSECONDS)
+@State(Scope.Benchmark)
+class SetBenchmark {
+
+ var base: Set[String] = _
+
+
+ @Setup(Level.Trial) def initKeys(): Unit = {
+ base = Set("a", "b", "c", "d")
+ }
+
+ // immutable map is implemented as EmptySet -> Set1 -> Set2 -> Set3 -> Set4 -> HashSet
+ // add an extra entry to Set4 causes a lot of work, benchmark the transition
+ @Benchmark def set4AddElement(bh: Blackhole): Unit = {
+ bh.consume(base + "e")
+ }
+}
diff --git a/test/checker-tests/fail1.scala b/test/checker-tests/fail1.scala
deleted file mode 100644
index b70a37d9cd..0000000000
--- a/test/checker-tests/fail1.scala
+++ /dev/null
@@ -1,17 +0,0 @@
-case class DebugParam[T](param: T)
-
-// TypeStack init: REFERENCE(type AnyRef)
-// [Now checking: typer]
-// [check: typer] work/fail1.scala:1: trees differ
-// old: T [Trees$Ident] (tpe = T)
-// new: T [Trees$TypeTree] (tpe = T)
-// [check: typer] work/fail1.scala:1: trees differ
-// old: DebugParam[T] [Trees$AppliedTypeTree] (tpe = null)
-// new: DebugParam[T] [Trees$TypeTree] (tpe = DebugParam[T])
-// Exception in thread "main" java.lang.NullPointerException
-// at scala.tools.nsc.typechecker.Typers$Typer.typedTypeConstructor(Typers.scala:4337)
-// at scala.tools.nsc.typechecker.Typers$Typer.typedTypeConstructor(Typers.scala:4358)
-// at scala.tools.nsc.typechecker.Typers$Typer.typedNew$1(Typers.scala:3240)
-// at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3994)
-// at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4223)
-// at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.scala$tools$nsc$typechecker$TreeCheckers$TreeChecker$$super$typed(TreeCheckers.scala:101)
diff --git a/test/checker-tests/fail10.scala b/test/checker-tests/fail10.scala
deleted file mode 100644
index c4aac71295..0000000000
--- a/test/checker-tests/fail10.scala
+++ /dev/null
@@ -1,23 +0,0 @@
-class ClassCounts extends scala.collection.mutable.HashMap[Class[_], Int] { }
-
-class A {
- def f(xs: ClassCounts) {
- // ok
- xs(getClass) = xs(getClass) + 1
- // not ok
- xs(getClass) += 1
- }
-}
-
-// [Not checkable: parser]
-// [Not checkable: namer]
-// [Not checkable: packageobjects]
-// [Now checking: typer]
-// test/checker-tests/fail10.scala:8: error:
-// **** ERROR DURING INTERNAL CHECKING ****
-// type mismatch;
-// found : java.lang.Class[?0(in value ev$1)] where type ?0(in value ev$1)
-// required: java.lang.Class[?0(in method f)] where type ?0(in method f)
-// xs(getClass) += 1
-// ^
-// one error found
diff --git a/test/checker-tests/fail12.scala b/test/checker-tests/fail12.scala
deleted file mode 100644
index 27c212ac65..0000000000
--- a/test/checker-tests/fail12.scala
+++ /dev/null
@@ -1,20 +0,0 @@
-class A {
- def f(b: Boolean) = {
- locally {
- while (b == false) ()
- // or:
- // do () while (b == false)
- }
- }
-}
-//
-// [Now checking: erasure]
-// [check: erasure] New symbols: BoxedUnit UNIT runtime scala
-// /tmp/fail.scala:4: error:
-// **** ERROR DURING INTERNAL CHECKING ****
-// type mismatch;
-// found : scala.runtime.BoxedUnit
-// required: Unit
-// while (b == false) ()
-// ^
-// one error found
diff --git a/test/checker-tests/fail2.scala b/test/checker-tests/fail2.scala
deleted file mode 100644
index 63672208db..0000000000
--- a/test/checker-tests/fail2.scala
+++ /dev/null
@@ -1,50 +0,0 @@
-// CC#9248 is conspicuously absent from the printed trees at every phase.
-class A {
- def f[A, CC[X] <: Traversable[X]](): Unit = ()
-}
-
-// % work/check all -uniqid -Xprint:typer work/fail2.scala
-//
-// TypeStack init: REFERENCE(type AnyRef#2783)
-// [Not checkable: parser]
-// [Not checkable: namer]
-// [Not checkable: packageobjects]
-// [[syntax trees at end of typer]]// Scala source: fail2.scala
-// package <empty>#3 {
-// class A#9239 extends java.lang.Object#2488 with ScalaObject#1481 {
-// def this#9243(): A#9239 = {
-// A#9239.super.this#5850();
-// ()
-// };
-// def f#9244[A#9245 >: Nothing#5846 <: Any#46, CC#9246[X#11055 >: Nothing#5846 <: Any#46] >: [X#11055]Nothing#5846 <: [X#11055]Traversable#3199[X#11055]](): Unit#3819 = ()
-// }
-// }
-//
-// [Now checking: typer]
-// [check: typer] work/fail2.scala:3: Expected owner type CC#9248, found type CC#9246: Trees$TypeDef / type X#11055>: Nothing#5846 <: Any#46
-// [Now checking: superaccessors]
-// [check: superaccessors] work/fail2.scala:3: Expected owner type CC#9248, found type CC#9246: Trees$TypeDef / type X#11055>: Nothing#5846 <: Any#46
-// [Now checking: pickler]
-// [check: pickler] work/fail2.scala:3: Expected owner type CC#9248, found type CC#9246: Trees$TypeDef / type X#11055>: Nothing#5846 <: Any#46
-// [Now checking: refchecks]
-// [check: refchecks] work/fail2.scala:3: Expected owner type CC#9248, found type CC#9246: Trees$TypeDef / type X#11055>: Nothing#5846 <: Any#46
-// [Now checking: selectiveanf]
-// [check: selectiveanf] work/fail2.scala:3: Expected owner type CC#9248, found type CC#9246: Trees$TypeDef / type X#11055>: Nothing#5846 <: Any#46
-// [Now checking: liftcode]
-// [check: liftcode] work/fail2.scala:3: Expected owner type CC#9248, found type CC#9246: Trees$TypeDef / type X#11055>: Nothing#5846 <: Any#46
-// [Now checking: selectivecps]
-// [check: selectivecps] work/fail2.scala:3: Expected owner type CC#9248, found type CC#9246: Trees$TypeDef / type X#11055>: Nothing#5846 <: Any#46
-// [Now checking: uncurry]
-// [check: uncurry] work/fail2.scala:3: Expected owner type CC#9248, found type CC#9246: Trees$TypeDef / type X#11055>: Nothing#5846 <: Any#46
-// [Now checking: tailcalls]
-// [check: tailcalls] work/fail2.scala:3: Expected owner type CC#9248, found type CC#9246: Trees$TypeDef / type X#11055>: Nothing#5846 <: Any#46
-// [Not checkable: specialize]
-// [Not checkable: explicitouter]
-// [Now checking: erasure]
-// [Now checking: lazyvals]
-// [Now checking: lambdalift]
-// [Now checking: constructors]
-// [Now checking: flatten]
-// [Now checking: mixin]
-// [Now checking: cleanup]
-// ... \ No newline at end of file
diff --git a/test/checker-tests/fail6.scala b/test/checker-tests/fail6.scala
deleted file mode 100644
index a43bada400..0000000000
--- a/test/checker-tests/fail6.scala
+++ /dev/null
@@ -1,61 +0,0 @@
-// BoxedUnit/Unit confusion involving while.
-//
-// Apply( // sym=method while$1, tpe=Unit, tpe.sym=class Unit, tpe.sym.owner=package scala
-// Ident("while$1"), // sym=method while$1, sym.owner=method f, sym.tpe=()Unit, tpe=()Unit, tpe.sym=<none>,
-class Erasure {
- def f(b: Boolean) = {
- if (b) "abc"
- else while (b) ()
- }
-}
-
-// % work/check all -Xprint:erasure work/fail6.scala
-// TypeStack init: REFERENCE(type AnyRef)
-// [Not checkable: parser]
-// [Not checkable: namer]
-// [Not checkable: packageobjects]
-// [Now checking: typer]
-// [Now checking: superaccessors]
-// [Now checking: pickler]
-// [Now checking: refchecks]
-// [Now checking: selectiveanf]
-// [Now checking: liftcode]
-// [Now checking: selectivecps]
-// [Now checking: uncurry]
-// [Now checking: tailcalls]
-// [Not checkable: specialize]
-// [Not checkable: explicitouter]
-// [[syntax trees at end of erasure]]// Scala source: fail6.scala
-// package <empty> {
-// class Erasure extends java.lang.Object with ScalaObject {
-// def this(): Erasure = {
-// Erasure.super.this();
-// ()
-// };
-// def f(b: Boolean): java.lang.Object = if (b)
-// "abc"
-// else
-// while$1(){
-// if (b)
-// {
-// ();
-// while$1()
-// }
-// else
-// ();
-// scala.runtime.BoxedUnit.UNIT
-// }
-// }
-// }
-//
-// [Now checking: erasure]
-// work/fail6.scala:4: error:
-// **** ERROR DURING INTERNAL CHECKING ****
-// type mismatch;
-// found : scala.runtime.BoxedUnit
-// required: Unit
-// else while (b) ()
-// ^
-// one error found
-//
-//
diff --git a/test/checker-tests/fail7.scala b/test/checker-tests/fail7.scala
deleted file mode 100644
index 58db58e37d..0000000000
--- a/test/checker-tests/fail7.scala
+++ /dev/null
@@ -1,70 +0,0 @@
-case class Foo(x: Int)
-
-// 1) Checking typer specifically:
-//
-// [Now checking: typer]
-// work/fail7.scala:1: error: double definition:
-// method canEqual:(x$1: Any)Boolean and
-// method canEqual:(x$1: Any)Boolean at line 1
-// have same type
-// case class Foo(x: Int)
-// ^
-//
-// 2) Checking all, which somehow misses it until superaccessors:
-//
-// [Not checkable: parser]
-// [Not checkable: namer]
-// [Not checkable: packageobjects]
-// [Now checking: typer]
-// [Now checking: superaccessors]
-// work/fail7.scala:1: error:
-// **** ERROR DURING INTERNAL CHECKING ****
-// method canEqual is defined twice
-// case class Foo(x: Int)
-// ^
-// one error found
-//
-// 3) Checking uncurry:
-//
-// [Now checking: uncurry]
-// work/fail7.scala:1: error: double definition:
-// method canEqual:(x$1: Any)Boolean and
-// method canEqual:(x$1: Any)Boolean at line 1
-// have same type
-// case class Foo(x: Int)
-// ^
-// exception when typing Foo.this.productArity()
-// Foo.this.productArity of type Int does not take parameters in file work/fail7.scala
-// scala.tools.nsc.symtab.Types$TypeError: Foo.this.productArity of type Int does not take parameters
-// at scala.tools.nsc.typechecker.Contexts$Context.error(Contexts.scala:277)
-// at scala.tools.nsc.typechecker.Infer$Inferencer.error(Infer.scala:205)
-// at scala.tools.nsc.typechecker.Infer$Inferencer.errorTree(Infer.scala:209)
-// at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:2632)
-// at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:3400)
-// at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4069)
-// at scala.tools.nsc.transform.Erasure$Eraser.liftedTree1$1(Erasure.scala:663)
-// at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:662)
-// at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4223)
-// at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:4368)
-// at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:1796)
-//
-// 4) Checking constructors:
-//
-// [Now checking: constructors]
-// work/fail7.scala:1: error:
-// **** ERROR DURING INTERNAL CHECKING ****
-// value x in class Foo cannot be accessed in Foo
-// because of an internal error (no accessible symbol):
-// sym = value x
-// underlying(sym) = value x
-// pre = Foo
-// site = Foo.this
-// tree = Foo.this.x
-// sym.accessBoundary(sym.owner) = class Foo
-// sym.ownerChain = List(value x, class Foo, package <empty>, package <root>)
-// sym.owner.thisType = Foo
-// context.owner = package <empty>
-// context.outer.enclClass.owner = package <empty>
-// case class Foo(x: Int)
-// ^
-// one error found
diff --git a/test/debug/OBSOLETE b/test/debug/OBSOLETE
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/debug/OBSOLETE
+++ /dev/null
diff --git a/test/debug/buildmanager/.gitignore b/test/debug/buildmanager/.gitignore
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/debug/buildmanager/.gitignore
+++ /dev/null
diff --git a/test/debug/jvm/.gitignore b/test/debug/jvm/.gitignore
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/debug/jvm/.gitignore
+++ /dev/null
diff --git a/test/debug/neg/.gitignore b/test/debug/neg/.gitignore
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/debug/neg/.gitignore
+++ /dev/null
diff --git a/test/debug/pos/.gitignore b/test/debug/pos/.gitignore
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/debug/pos/.gitignore
+++ /dev/null
diff --git a/test/debug/res/.gitignore b/test/debug/res/.gitignore
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/debug/res/.gitignore
+++ /dev/null
diff --git a/test/debug/run/.gitignore b/test/debug/run/.gitignore
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/debug/run/.gitignore
+++ /dev/null
diff --git a/test/debug/scalacheck/.gitignore b/test/debug/scalacheck/.gitignore
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/debug/scalacheck/.gitignore
+++ /dev/null
diff --git a/test/debug/scalap/.gitignore b/test/debug/scalap/.gitignore
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/debug/scalap/.gitignore
+++ /dev/null
diff --git a/test/debug/shootout/.gitignore b/test/debug/shootout/.gitignore
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/debug/shootout/.gitignore
+++ /dev/null
diff --git a/test/disabled-windows/script/loadAndExecute.check b/test/disabled-windows/script/loadAndExecute.check
deleted file mode 100644
index ccd8cd6e37..0000000000
--- a/test/disabled-windows/script/loadAndExecute.check
+++ /dev/null
@@ -1 +0,0 @@
-List(hello, world)
diff --git a/test/disabled-windows/script/loadAndExecute/lAndE1.scala b/test/disabled-windows/script/loadAndExecute/lAndE1.scala
deleted file mode 100755
index b20d1a9428..0000000000
--- a/test/disabled-windows/script/loadAndExecute/lAndE1.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-object Bop {
- implicit def int2list(x: Int): List[String] = List("hello", "world")
-} \ No newline at end of file
diff --git a/test/disabled-windows/script/loadAndExecute/lAndE2.scala b/test/disabled-windows/script/loadAndExecute/lAndE2.scala
deleted file mode 100755
index ea15a04d86..0000000000
--- a/test/disabled-windows/script/loadAndExecute/lAndE2.scala
+++ /dev/null
@@ -1 +0,0 @@
-import Bop._
diff --git a/test/disabled-windows/script/loadAndExecute/loadAndExecute.scala b/test/disabled-windows/script/loadAndExecute/loadAndExecute.scala
deleted file mode 100755
index 2a9718382b..0000000000
--- a/test/disabled-windows/script/loadAndExecute/loadAndExecute.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-scala -nocompdaemon -i lAndE1.scala lAndE2.scala -e 'println(5: List[String])'
diff --git a/test/disabled-windows/script/utf8.bat b/test/disabled-windows/script/utf8.bat
deleted file mode 100755
index 73c72569b3..0000000000
--- a/test/disabled-windows/script/utf8.bat
+++ /dev/null
@@ -1,11 +0,0 @@
-::#!
-:: utf8 - <description>.
-
-@echo off
-call scala -nocompdaemon %0 %*
-goto :eof
-::!#
-
-/*Comment Комментарий*/
-Console.println("QWERTY");
-Console.println("ЙЦУКЕН");
diff --git a/test/disabled-windows/script/utf8.check b/test/disabled-windows/script/utf8.check
deleted file mode 100644
index 29dc0518ff..0000000000
--- a/test/disabled-windows/script/utf8.check
+++ /dev/null
@@ -1,2 +0,0 @@
-QWERTY
-ЙЦУКЕН
diff --git a/test/disabled-windows/script/utf8.scala b/test/disabled-windows/script/utf8.scala
deleted file mode 100755
index 5dfade0bb2..0000000000
--- a/test/disabled-windows/script/utf8.scala
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-#
-# Checks if UTF-8 output makes it through unmangled.
-
-cygwin=false;
-case "`uname`" in
- CYGWIN*) cygwin=true ;;
-esac
-
-SOURCE="$0";
-if $cygwin; then
- if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ;
-then
- format=mixed
- else
- format=windows
- fi
- SOURCE=`cygpath --$format "$SOURCE"`;
-fi
-
-exec scala -Dfile.encoding="UTF-8" -nocompdaemon "$SOURCE" "$@"
-!#
-
-/*Comment Комментарий*/
-Console.println("QWERTY");
-Console.println("ЙЦУКЕН");
diff --git a/test/disabled/buildmanager/overloaded_1/A.scala b/test/disabled/buildmanager/overloaded_1/A.scala
deleted file mode 100644
index c070faf978..0000000000
--- a/test/disabled/buildmanager/overloaded_1/A.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-trait As {
- trait C extends D {
- override def foo = this /// Shouldn't cause the change
- override def foo(act: List[D]) = this
- }
-
- abstract class D{
- def foo: D = this
- def foo(act: List[D]) = this
- }
-}
diff --git a/test/disabled/buildmanager/overloaded_1/overloaded_1.check b/test/disabled/buildmanager/overloaded_1/overloaded_1.check
deleted file mode 100644
index 4d643ce6b4..0000000000
--- a/test/disabled/buildmanager/overloaded_1/overloaded_1.check
+++ /dev/null
@@ -1,6 +0,0 @@
-builder > A.scala
-compiling Set(A.scala)
-Changes: Map()
-builder > A.scala
-compiling Set(A.scala)
-Changes: Map(class As$D -> List(), object As$C$class -> List(), object As$class -> List(), trait As -> List(), trait As$C -> List())
diff --git a/test/disabled/buildmanager/overloaded_1/overloaded_1.test b/test/disabled/buildmanager/overloaded_1/overloaded_1.test
deleted file mode 100644
index 392e0d365f..0000000000
--- a/test/disabled/buildmanager/overloaded_1/overloaded_1.test
+++ /dev/null
@@ -1,2 +0,0 @@
->>compile A.scala
->>compile A.scala
diff --git a/test/disabled/buildmanager/t2651_1/A.scala b/test/disabled/buildmanager/t2651_1/A.scala
deleted file mode 100644
index d712f6febe..0000000000
--- a/test/disabled/buildmanager/t2651_1/A.scala
+++ /dev/null
@@ -1 +0,0 @@
-trait A[T]
diff --git a/test/disabled/buildmanager/t2651_1/B.scala b/test/disabled/buildmanager/t2651_1/B.scala
deleted file mode 100644
index a8aca3d0ed..0000000000
--- a/test/disabled/buildmanager/t2651_1/B.scala
+++ /dev/null
@@ -1,2 +0,0 @@
-trait B[T] extends A[T]
-
diff --git a/test/disabled/buildmanager/t2651_1/C.scala b/test/disabled/buildmanager/t2651_1/C.scala
deleted file mode 100644
index 690dcf518d..0000000000
--- a/test/disabled/buildmanager/t2651_1/C.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-object C {
- new A[Int] {}
-}
diff --git a/test/disabled/buildmanager/t2651_1/D.scala b/test/disabled/buildmanager/t2651_1/D.scala
deleted file mode 100644
index 51273ad986..0000000000
--- a/test/disabled/buildmanager/t2651_1/D.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-object D {
- def x[T](a: A[T]) = a
-}
diff --git a/test/disabled/buildmanager/t2651_1/t2651_1.changes/A2.scala b/test/disabled/buildmanager/t2651_1/t2651_1.changes/A2.scala
deleted file mode 100644
index 574b522149..0000000000
--- a/test/disabled/buildmanager/t2651_1/t2651_1.changes/A2.scala
+++ /dev/null
@@ -1,2 +0,0 @@
-trait A
-
diff --git a/test/disabled/buildmanager/t2651_1/t2651_1.check b/test/disabled/buildmanager/t2651_1/t2651_1.check
deleted file mode 100644
index 8d2cbc8194..0000000000
--- a/test/disabled/buildmanager/t2651_1/t2651_1.check
+++ /dev/null
@@ -1,19 +0,0 @@
-builder > A.scala B.scala C.scala D.scala
-compiling Set(A.scala, B.scala, C.scala, D.scala)
-Changes: Map()
-builder > A.scala
-compiling Set(A.scala)
-Changes: Map(trait A -> List(Changed(Class(A))[ tparams: List()]))
-invalidate B.scala because parents have changed [Changed(Class(A))[ tparams: List()]]
-invalidate C.scala because parents have changed [Changed(Class(A))[ tparams: List()]]
-invalidate D.scala because it references changed class [Changed(Class(A))[ tparams: List()]]
-compiling Set(B.scala, C.scala, D.scala)
-B.scala:1: error: A does not take type parameters
-trait B[T] extends A[T]
- ^
-C.scala:2: error: A does not take type parameters
- new A[Int] {}
- ^
-D.scala:2: error: A does not take type parameters
- def x[T](a: A[T]) = a
- ^
diff --git a/test/disabled/buildmanager/t2651_1/t2651_1.test b/test/disabled/buildmanager/t2651_1/t2651_1.test
deleted file mode 100644
index 4f67d5e233..0000000000
--- a/test/disabled/buildmanager/t2651_1/t2651_1.test
+++ /dev/null
@@ -1,3 +0,0 @@
->>compile A.scala B.scala C.scala D.scala
->>update A.scala=>A2.scala
->>compile A.scala
diff --git a/test/disabled/buildmanager/t2652/A.scala b/test/disabled/buildmanager/t2652/A.scala
deleted file mode 100644
index a62506e890..0000000000
--- a/test/disabled/buildmanager/t2652/A.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-class A {
- def x[T](t: T) = t
-}
diff --git a/test/disabled/buildmanager/t2652/B.scala b/test/disabled/buildmanager/t2652/B.scala
deleted file mode 100644
index 86d08f0d3d..0000000000
--- a/test/disabled/buildmanager/t2652/B.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-object B {
- val y = (new A).x(3)
-}
-
diff --git a/test/disabled/buildmanager/t2652/t2652.changes/A2.scala b/test/disabled/buildmanager/t2652/t2652.changes/A2.scala
deleted file mode 100644
index 29135c0e94..0000000000
--- a/test/disabled/buildmanager/t2652/t2652.changes/A2.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-class A {
- def x[@specialized T](t: T) = t
-}
-
diff --git a/test/disabled/buildmanager/t2652/t2652.check b/test/disabled/buildmanager/t2652/t2652.check
deleted file mode 100644
index 071281c6ff..0000000000
--- a/test/disabled/buildmanager/t2652/t2652.check
+++ /dev/null
@@ -1,9 +0,0 @@
-builder > A.scala B.scala
-compiling Set(A.scala, B.scala)
-Changes: Map()
-builder > A.scala
-compiling Set(A.scala)
-Changes: Map(class A -> List(Added(Definition(A.x$mBc$sp)), Added(Definition(A.x$mCc$sp)), Added(Definition(A.x$mDc$sp)), Added(Definition(A.x$mFc$sp)), Added(Definition(A.x$mIc$sp)), Added(Definition(A.x$mJc$sp)), Added(Definition(A.x$mSc$sp)), Added(Definition(A.x$mVc$sp)), Added(Definition(A.x$mZc$sp)), Changed(Definition(A.x))[method x changed from [T](t: T)T to [T](t: T)T flags: <method> <triedcooking>]))
-invalidate B.scala because it references changed definition [Changed(Definition(A.x))[method x changed from [T](t: T)T to [T](t: T)T flags: <method> <triedcooking>]]
-compiling Set(B.scala)
-Changes: Map(object B -> List())
diff --git a/test/disabled/buildmanager/t2652/t2652.test b/test/disabled/buildmanager/t2652/t2652.test
deleted file mode 100644
index 6f3bd03361..0000000000
--- a/test/disabled/buildmanager/t2652/t2652.test
+++ /dev/null
@@ -1,3 +0,0 @@
->>compile A.scala B.scala
->>update A.scala=>A2.scala
->>compile A.scala
diff --git a/test/disabled/buildmanager/t4245/A.scala b/test/disabled/buildmanager/t4245/A.scala
deleted file mode 100644
index 7c4efe1b4b..0000000000
--- a/test/disabled/buildmanager/t4245/A.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-class A {
- class B(val a: Int)
-}
diff --git a/test/disabled/buildmanager/t4245/t4245.check b/test/disabled/buildmanager/t4245/t4245.check
deleted file mode 100644
index 3d3898c671..0000000000
--- a/test/disabled/buildmanager/t4245/t4245.check
+++ /dev/null
@@ -1,6 +0,0 @@
-builder > A.scala
-compiling Set(A.scala)
-Changes: Map()
-builder > A.scala
-compiling Set(A.scala)
-Changes: Map(class A -> List(), class A$B -> List())
diff --git a/test/disabled/buildmanager/t4245/t4245.test b/test/disabled/buildmanager/t4245/t4245.test
deleted file mode 100644
index 392e0d365f..0000000000
--- a/test/disabled/buildmanager/t4245/t4245.test
+++ /dev/null
@@ -1,2 +0,0 @@
->>compile A.scala
->>compile A.scala
diff --git a/test/disabled/coder/Coder.scala b/test/disabled/coder/Coder.scala
deleted file mode 100644
index b116a41a5d..0000000000
--- a/test/disabled/coder/Coder.scala
+++ /dev/null
@@ -1,212 +0,0 @@
-
-
-import collection.immutable._
-import collection.parallel.immutable._
-
-
-class SeqCoder(words: List[String]) {
-
- private val m = Map(
- '2' -> "ABC", '3' -> "DEF", '4' -> "GHI", '5' -> "JKL",
- '6' -> "MNO", '7' -> "PQRS", '8' -> "TUV", '9' -> "WXYZ")
-
- /** Invert the mnemonics map to give a map from chars 'A' ... 'Z' to '2' ... '9' */
- private val charCode: Map[Char, Char] =
- for ((digit, letters) <- m; letter <- letters) yield letter -> digit
-
- /** Maps a word to the digit string it represents,
- * e.g. `Java` -> `5282` */
- private def wordCode(word: String): String = word.toUpperCase map charCode
-
- /** A map from digit strings to the words that represent
- * them e.g. `5282` -> List(`Java`, `Kata`, `Lava`, ...)
- */
- val wordsForNum: Map[String, List[String]] =
- words groupBy wordCode withDefaultValue List()
-
- val memo = collection.mutable.Map[String, Set[List[String]]]("" -> Set(List()))
- val wfnmemo = collection.mutable.Map[(String, String), Set[List[String]]]()
- val subsmemo = collection.mutable.Map[(String, String, String), Set[List[String]]]()
-
- /** All ways to encode a number as a list of words */
- def encode(number: String): Set[List[String]] =
- if (number.isEmpty) Set(List())
- else {
- val splits = (1 to number.length).toSet
- // for {
- // split <- splits
- // word <- wordsForNum(number take split)
- // rest <- encode(number drop split)
- // } yield word :: rest
- val r = splits.flatMap(split => {
- val wfn = wordsForNum(number take split).flatMap(word => {
- val subs = encode(number drop split)
- val subsmapped = subs.map(rest => word :: rest)
- subsmemo += (number, number drop split, word) -> subsmapped
- subsmapped
- })
- wfnmemo += (number, number take split) -> wfn.toSet
- wfn
- })
- memo += number -> r
- r
- }
-
- /** Maps a number to a list of all word phrases that can
- * represent it */
- def translate(number: String): Set[String] = encode(number) map (_ mkString " ")
-
- def ??? : Nothing = throw new UnsupportedOperationException
-}
-
-class ParCoder(words: List[String]) {
-
- private val m = Map(
- '2' -> "ABC", '3' -> "DEF", '4' -> "GHI", '5' -> "JKL",
- '6' -> "MNO", '7' -> "PQRS", '8' -> "TUV", '9' -> "WXYZ")
-
- /** Invert the mnemonics map to give a map from chars 'A' ... 'Z' to '2' ... '9' */
- private val charCode: Map[Char, Char] =
- for ((digit, letters) <- m; letter <- letters) yield letter -> digit
-
- /** Maps a word to the digit string it represents,
- * e.g. `Java` -> `5282` */
- private def wordCode(word: String): String = word.toUpperCase map charCode
-
- /** A map from digit strings to the words that represent
- * them e.g. `5282` -> List(`Java`, `Kata`, `Lava`, ...)
- */
- val wordsForNum: Map[String, List[String]] =
- words groupBy wordCode withDefaultValue List()
-
- val comparison = new SeqCoder(words)
-
- /** All ways to encode a number as a list of words */
- def encode(number: String): ParSet[List[String]] =
- if (number.isEmpty) ParSet(List())
- else {
- val splits = (1 to number.length).toSet.par
- // for {
- // split <- splits
- // word <- wordsForNum(number take split)
- // rest <- encode(number drop split)
- // } yield word :: rest
- val r = splits.flatMap(split => {
- val wfn = wordsForNum(number take split).flatMap(word => {
- val subs = encode(number drop split)
- assertNumber(number drop split, subs)
- val subsmapped = subs.map(rest => word :: rest)
- assertSubs(number, number drop split, word, subsmapped)
- subsmapped.toList
- })
- assertWfn(number, number take split, number drop split, wfn)
- wfn
- })
- assertNumber(number, r)
- r
- }
-
- def assertSubs(num: String, subsfrom: String, word: String, r: ParSet[List[String]]) {
- val m = comparison.subsmemo((num, subsfrom, word))
- if (r != m) {
- println("map for number from subs and word: " + num + ", " + subsfrom + ", " + word)
- println("parset: " + r.size)
- println("memoed: " + m.size)
- error("r != m")
- }
- }
-
- def assertWfn(num: String, split: String, dropped: String, r: List[List[String]]) {
- val m = comparison.wfnmemo((num, split))
- val rs = r.toSet
- val words: List[String] = wordsForNum(split)
- if (rs != m) {
- println("flatmap for number with split: " + num + ", " + split)
- println("words for: " + words)
- println("parset: " + rs.size)
- println("memoed: " + m.size)
- println("retrying...")
- for (i <- 0 until 30) {
- val r2: List[List[String]] = words.flatMap(word => {
- val subs: ParSet[List[String]] = encode(dropped)
- println("subs size for '" + dropped + "': " + subs.size)
- val subsmapped: ParSet[List[String]] = subs.map(rest => word :: rest)
- println("map size: " + subsmapped.size)
- subsmapped.toList
- })
- println(i + ") retry size: " + r2.size)
- }
- error("rs != m")
- }
- }
-
- def assertNumber(num: String, r: ParSet[List[String]]) {
- val m = comparison.memo(num)
- if (r != m) {
- println("for number: " + num)
- println("parset: " + r.size)
- println("memoed: " + m.size)
- error("r != m")
- }
- }
-
- /** Maps a number to a list of all word phrases that can
- * represent it */
- def translate(number: String): ParSet[String] = {
- comparison.translate(number)
- encode(number) map (_ mkString " ")
- }
-
- def ??? : Nothing = throw new UnsupportedOperationException
-}
-
-
-/** Test code */
-object Test {
- val code = "2328437472947"//36262633"//837976"//"6477323986225453446"
- //val code = "747294736262633"
-
- /* */
- def main(args : Array[String]) {
- // import java.util.concurrent.ForkJoinPool
- // collection.parallel.tasksupport.environment match {
- // case fj: ForkJoinPool => fj.setParallelism(1)
- // }
- // println(collection.parallel.tasksupport.parallelismLevel)
-
- for (i <- 0 until 10) {
- val seqcoder = new SeqCoder(Dictionary.wordlist)
- val st = seqcoder.translate(code)
- //println("Translation check: " + st.size)
-
- val parcoder = new ParCoder(Dictionary.wordlist)
- val pt = parcoder.translate(code)
- //println("Translation check: " + pt.size)
-
- // val st = sts.toList.sorted
- // val pt = pts.toList.sorted
- if (st.size != pt.size) {
- // val zipped = st.zip(pt)
- // val ind = zipped.indexWhere { case (a, b) => a != b }
- // val sliced = zipped.slice(ind - 10, ind + 10)
- // println(sliced.map(t => t._1 + "\n" + t._2 + "\n--------").mkString("\n"))
- println(i + ") seq vs par: " + st.size + " vs " + pt.size)
- }
- assert(st == pt)
- }
- }
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/test/disabled/coder/Dictionary.scala b/test/disabled/coder/Dictionary.scala
deleted file mode 100644
index 7b354b9aa8..0000000000
--- a/test/disabled/coder/Dictionary.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-object Dictionary {
- val wordlist = wordlines.split(System.getProperty("line.separator")).filter(_.trim != "").toList
- val wordarray = wordlist.toArray
- def wordlines = scala.io.Source.fromFile("test/files/run/coder/dict.txt").mkString
-}
diff --git a/test/disabled/coder/dict.txt b/test/disabled/coder/dict.txt
deleted file mode 100644
index 46e95c907f..0000000000
--- a/test/disabled/coder/dict.txt
+++ /dev/null
@@ -1,58111 +0,0 @@
-aardvark
-aardwolf
-aaron
-aback
-abacus
-abaft
-abalone
-abandon
-abandoned
-abandonment
-abandons
-abase
-abased
-abasement
-abash
-abashed
-abate
-abated
-abatement
-abates
-abattoir
-abattoirs
-abbe
-abbess
-abbey
-abbeys
-abbot
-abbots
-abbreviate
-abbreviated
-abbreviates
-abbreviating
-abbreviation
-abbreviations
-abdicate
-abdicated
-abdicates
-abdicating
-abdication
-abdomen
-abdomens
-abdominal
-abduct
-abducted
-abducting
-abduction
-abductions
-abductor
-abductors
-abducts
-abe
-abeam
-abel
-abele
-aberdeen
-aberrant
-aberration
-aberrations
-abet
-abets
-abetted
-abetting
-abeyance
-abhor
-abhorred
-abhorrence
-abhorrent
-abhors
-abide
-abided
-abides
-abiding
-abidjan
-abies
-abilities
-ability
-abject
-abjectly
-abjure
-abjured
-ablate
-ablates
-ablating
-ablation
-ablative
-ablaze
-able
-ablebodied
-abler
-ablest
-abloom
-ablution
-ablutions
-ably
-abnegation
-abnormal
-abnormalities
-abnormality
-abnormally
-aboard
-abode
-abodes
-abolish
-abolished
-abolishes
-abolishing
-abolition
-abolitionist
-abolitionists
-abomb
-abominable
-abominably
-abominate
-abominated
-abomination
-abominations
-aboriginal
-aborigines
-abort
-aborted
-aborting
-abortion
-abortionist
-abortionists
-abortions
-abortive
-aborts
-abound
-abounded
-abounding
-abounds
-about
-above
-abraded
-abraham
-abrasion
-abrasions
-abrasive
-abrasively
-abrasiveness
-abrasives
-abreast
-abridge
-abridged
-abridgement
-abridging
-abroad
-abrogate
-abrogated
-abrogating
-abrogation
-abrogations
-abrupt
-abruptly
-abruptness
-abscess
-abscesses
-abscissa
-abscissae
-abscissas
-abscond
-absconded
-absconder
-absconding
-absconds
-abseil
-abseiled
-abseiler
-abseiling
-abseils
-absence
-absences
-absent
-absented
-absentee
-absenteeism
-absentees
-absenting
-absently
-absentminded
-absentmindedly
-absentmindedness
-absolute
-absolutely
-absoluteness
-absolutes
-absolution
-absolutism
-absolutist
-absolutists
-absolve
-absolved
-absolves
-absolving
-absorb
-absorbed
-absorbency
-absorbent
-absorber
-absorbers
-absorbing
-absorbingly
-absorbs
-absorption
-absorptions
-absorptive
-absorptivity
-abstain
-abstained
-abstainer
-abstainers
-abstaining
-abstains
-abstemious
-abstemiously
-abstemiousness
-abstention
-abstentions
-abstinence
-abstinent
-abstract
-abstracted
-abstractedly
-abstracting
-abstraction
-abstractions
-abstractly
-abstracts
-abstruse
-abstrusely
-absurd
-absurder
-absurdest
-absurdist
-absurdities
-absurdity
-absurdly
-abundance
-abundances
-abundant
-abundantly
-abuse
-abused
-abuser
-abusers
-abuses
-abusing
-abusive
-abusively
-abusiveness
-abut
-abutment
-abutments
-abutted
-abutting
-abuzz
-aby
-abysmal
-abysmally
-abyss
-abyssal
-abysses
-acacia
-academe
-academia
-academic
-academical
-academically
-academician
-academicians
-academics
-academies
-academy
-acanthus
-acapulco
-accede
-acceded
-acceding
-accelerate
-accelerated
-accelerates
-accelerating
-acceleration
-accelerations
-accelerator
-accelerators
-accelerometer
-accelerometers
-accent
-accented
-accenting
-accents
-accentuate
-accentuated
-accentuates
-accentuating
-accentuation
-accept
-acceptability
-acceptable
-acceptably
-acceptance
-acceptances
-accepted
-accepting
-acceptor
-acceptors
-accepts
-access
-accessed
-accesses
-accessibility
-accessible
-accessing
-accession
-accessions
-accessories
-accessory
-accidence
-accident
-accidental
-accidentally
-accidentprone
-accidents
-acclaim
-acclaimed
-acclaims
-acclamation
-acclamations
-acclimatisation
-acclimatise
-acclimatised
-acclimatising
-accolade
-accolades
-accommodate
-accommodated
-accommodates
-accommodating
-accommodation
-accommodations
-accompanied
-accompanies
-accompaniment
-accompaniments
-accompanist
-accompany
-accompanying
-accomplice
-accomplices
-accomplish
-accomplished
-accomplishes
-accomplishing
-accomplishment
-accomplishments
-accord
-accordance
-accorded
-according
-accordingly
-accordion
-accordionist
-accordions
-accords
-accost
-accosted
-accosting
-accosts
-account
-accountability
-accountable
-accountancy
-accountant
-accountants
-accounted
-accounting
-accounts
-accra
-accredit
-accreditation
-accredited
-accrediting
-accredits
-accreted
-accretion
-accretions
-accrual
-accruals
-accrue
-accrued
-accrues
-accruing
-accumulate
-accumulated
-accumulates
-accumulating
-accumulation
-accumulations
-accumulative
-accumulator
-accumulators
-accuracies
-accuracy
-accurate
-accurately
-accursed
-accusal
-accusals
-accusation
-accusations
-accusative
-accusatory
-accuse
-accused
-accuser
-accusers
-accuses
-accusing
-accusingly
-accustom
-accustomed
-accustoming
-ace
-aced
-acentric
-acerbic
-acerbity
-acers
-aces
-acetal
-acetate
-acetates
-acetic
-acetone
-acetylene
-ache
-ached
-aches
-achievable
-achieve
-achieved
-achievement
-achievements
-achiever
-achievers
-achieves
-achieving
-aching
-achingly
-achings
-achromatic
-achy
-acid
-acidic
-acidification
-acidified
-acidify
-acidifying
-acidity
-acidly
-acidophiles
-acidrain
-acids
-acknowledge
-acknowledged
-acknowledgement
-acknowledgements
-acknowledges
-acknowledging
-acknowledgment
-acknowledgments
-acme
-acne
-acolyte
-acolytes
-aconite
-acorn
-acorns
-acoustic
-acoustical
-acoustically
-acoustics
-acquaint
-acquaintance
-acquaintances
-acquainted
-acquainting
-acquaints
-acquiesce
-acquiesced
-acquiescence
-acquiescent
-acquiescing
-acquire
-acquired
-acquirer
-acquirers
-acquires
-acquiring
-acquisition
-acquisitions
-acquisitive
-acquisitiveness
-acquit
-acquited
-acquites
-acquits
-acquittal
-acquittals
-acquittance
-acquitted
-acquitting
-acre
-acreage
-acres
-acrid
-acrimonious
-acrimoniously
-acrimony
-acrobat
-acrobatic
-acrobatics
-acrobats
-acronym
-acronyms
-across
-acrostic
-acrostics
-acrylic
-acrylics
-act
-acted
-acting
-actings
-actinides
-action
-actionable
-actions
-activate
-activated
-activates
-activating
-activation
-activations
-activator
-activators
-active
-actively
-actives
-activism
-activist
-activists
-activities
-activity
-actor
-actors
-actress
-actresses
-acts
-actual
-actualisation
-actualise
-actualised
-actualities
-actuality
-actually
-actuarial
-actuaries
-actuary
-actuate
-actuated
-actuates
-actuating
-actuation
-actuator
-actuators
-acuity
-acumen
-acupuncture
-acupuncturist
-acupuncturists
-acute
-acutely
-acuteness
-acuter
-acutest
-acyclic
-adage
-adages
-adagio
-adam
-adamant
-adamantly
-adapt
-adaptability
-adaptable
-adaptation
-adaptations
-adapted
-adapter
-adapters
-adapting
-adaptive
-adaptively
-adaptivity
-adaptor
-adaptors
-adapts
-add
-added
-addenda
-addendum
-adder
-adders
-addict
-addicted
-addiction
-addictions
-addictive
-addictiveness
-addicts
-adding
-addition
-additional
-additionally
-additions
-additive
-additively
-additives
-addle
-addled
-addles
-addling
-address
-addressability
-addressable
-addressed
-addressee
-addressees
-addresses
-addressing
-adds
-adduce
-adduced
-adduces
-adducing
-adelaide
-aden
-adenine
-adenoid
-adenoids
-adenoma
-adenomas
-adept
-adepts
-adequacy
-adequate
-adequately
-adhere
-adhered
-adherence
-adherent
-adherents
-adherer
-adherers
-adheres
-adhering
-adhesion
-adhesions
-adhesive
-adhesiveness
-adhesives
-adhoc
-adiabatic
-adiabatically
-adieu
-adieus
-adieux
-adios
-adipose
-adit
-adjacency
-adjacent
-adjacently
-adjectival
-adjective
-adjectives
-adjoin
-adjoined
-adjoining
-adjoins
-adjourn
-adjourned
-adjourning
-adjournment
-adjourns
-adjudge
-adjudged
-adjudges
-adjudicate
-adjudicated
-adjudicates
-adjudicating
-adjudication
-adjudications
-adjudicator
-adjudicators
-adjunct
-adjuncts
-adjure
-adjust
-adjustable
-adjusted
-adjuster
-adjusting
-adjustment
-adjustments
-adjusts
-adjutant
-adlib
-adlibs
-adman
-admen
-admin
-administer
-administered
-administering
-administers
-administrate
-administrated
-administrating
-administration
-administrations
-administrative
-administratively
-administrator
-administrators
-admirable
-admirably
-admiral
-admirals
-admiration
-admire
-admired
-admirer
-admirers
-admires
-admiring
-admiringly
-admissibility
-admissible
-admission
-admissions
-admit
-admits
-admittance
-admittances
-admitted
-admittedly
-admitting
-admix
-admixture
-admonish
-admonished
-admonishes
-admonishing
-admonishment
-admonition
-admonitions
-admonitory
-ado
-adobe
-adolescence
-adolescent
-adolescents
-adonis
-adopt
-adopted
-adopter
-adopting
-adoption
-adoptions
-adoptive
-adopts
-adorable
-adorably
-adoration
-adore
-adored
-adorer
-adorers
-adores
-adoring
-adoringly
-adorn
-adorned
-adorning
-adornment
-adornments
-adorns
-adrenal
-adrenalin
-adrenaline
-adrift
-adroit
-adroitly
-adroitness
-adsorb
-adsorbed
-adsorption
-adulation
-adulatory
-adult
-adulterate
-adulterated
-adulterates
-adulterating
-adulteration
-adulterations
-adulterer
-adulterers
-adulteress
-adulteresses
-adulterous
-adultery
-adulthood
-adults
-adumbrate
-adumbrated
-adumbrating
-advance
-advanced
-advancement
-advancements
-advancer
-advances
-advancing
-advantage
-advantaged
-advantageous
-advantageously
-advantages
-advent
-advents
-adventure
-adventured
-adventurer
-adventurers
-adventures
-adventuring
-adventurism
-adventurous
-adventurously
-adverb
-adverbial
-adverbs
-adversarial
-adversaries
-adversary
-adverse
-adversely
-adversities
-adversity
-advert
-adverted
-advertise
-advertised
-advertisement
-advertisements
-advertiser
-advertisers
-advertises
-advertising
-adverts
-advice
-advices
-advisability
-advisable
-advise
-advised
-advisedly
-adviser
-advisers
-advises
-advising
-advisory
-advocacy
-advocate
-advocated
-advocates
-advocating
-adze
-aegean
-aegina
-aegis
-aeolian
-aeon
-aeons
-aerate
-aerated
-aerates
-aerating
-aeration
-aerator
-aerial
-aerially
-aerials
-aerify
-aerobatic
-aerobatics
-aerobe
-aerobes
-aerobic
-aerobically
-aerobics
-aerobraking
-aerodrome
-aerodromes
-aerodynamic
-aerodynamically
-aerodynamics
-aerofoil
-aerofoils
-aeronaut
-aeronautic
-aeronautical
-aeronautics
-aeroplane
-aeroplanes
-aerosol
-aerosols
-aerospace
-aesop
-aesthete
-aesthetes
-aesthetic
-aesthetically
-aestheticism
-aestheticsy
-afar
-affability
-affable
-affably
-affair
-affairs
-affect
-affectation
-affectations
-affected
-affectedly
-affecting
-affection
-affectionate
-affectionately
-affections
-affective
-affects
-afferent
-affidavit
-affidavits
-affiliate
-affiliated
-affiliates
-affiliating
-affiliation
-affiliations
-affine
-affinities
-affinity
-affirm
-affirmation
-affirmations
-affirmative
-affirmatively
-affirmed
-affirming
-affirms
-affix
-affixed
-affixes
-affixing
-afflict
-afflicted
-afflicting
-affliction
-afflictions
-afflicts
-affluence
-affluent
-afflux
-afford
-affordability
-affordable
-afforded
-affording
-affords
-afforestation
-afforested
-affray
-affront
-affronted
-affronts
-afghan
-afghani
-afghans
-afield
-afire
-aflame
-afloat
-afoot
-aforementioned
-aforesaid
-aforethought
-afraid
-afresh
-africa
-african
-africans
-afro
-afros
-aft
-after
-afterbirth
-aftercare
-aftereffect
-aftereffects
-afterglow
-afterlife
-afterlives
-aftermath
-afternoon
-afternoons
-aftershave
-aftershocks
-aftertaste
-afterthought
-afterthoughts
-afterward
-afterwards
-aga
-again
-against
-agakhan
-agape
-agar
-agaragar
-agave
-agaves
-age
-aged
-ageing
-ageings
-ageism
-ageless
-agencies
-agency
-agenda
-agendas
-agendums
-agent
-agents
-ageold
-ages
-agglomerated
-agglomerating
-agglomeration
-agglomerations
-agglutinative
-aggravate
-aggravated
-aggravates
-aggravating
-aggravation
-aggravations
-aggregate
-aggregated
-aggregates
-aggregating
-aggregation
-aggregations
-aggression
-aggressions
-aggressive
-aggressively
-aggressiveness
-aggressor
-aggressors
-aggrieved
-aggrievedly
-aghast
-agile
-agiler
-agility
-aging
-agings
-agio
-agitate
-agitated
-agitatedly
-agitates
-agitating
-agitation
-agitations
-agitator
-agitators
-agitprop
-agleam
-aglow
-agnostic
-agnosticism
-agnostics
-ago
-agog
-agonies
-agonise
-agonised
-agonises
-agonising
-agonisingly
-agonist
-agonists
-agony
-agora
-agoraphobia
-agoraphobic
-agouti
-agrarian
-agree
-agreeable
-agreeableness
-agreeably
-agreed
-agreeing
-agreement
-agreements
-agrees
-agribusiness
-agricultural
-agriculturalist
-agriculturalists
-agriculturally
-agriculture
-agrimony
-agrochemical
-agrochemicals
-agronomist
-agronomists
-agronomy
-aground
-ague
-ah
-aha
-ahead
-ahem
-ahoy
-aid
-aide
-aided
-aidedecamp
-aider
-aiders
-aides
-aidesdecamp
-aiding
-aids
-ail
-aileron
-ailerons
-ailing
-ailment
-ailments
-ails
-aim
-aimed
-aimer
-aiming
-aimless
-aimlessly
-aimlessness
-aims
-aint
-air
-airbase
-airborne
-airbrush
-airbus
-airconditioned
-airconditioner
-airconditioning
-aircraft
-aircrew
-aircrews
-aire
-aired
-airfield
-airfields
-airflow
-airforce
-airframe
-airframes
-airgun
-airier
-airiest
-airily
-airiness
-airing
-airings
-airless
-airlift
-airlifted
-airlifting
-airlifts
-airline
-airliner
-airliners
-airlines
-airlock
-airlocks
-airmail
-airman
-airmen
-airplane
-airplay
-airport
-airports
-airraid
-airs
-airship
-airships
-airsick
-airsickness
-airspace
-airstream
-airstrip
-airstrips
-airtight
-airtime
-airwave
-airwaves
-airway
-airways
-airworthiness
-airworthy
-airy
-aisle
-aisles
-aitches
-ajar
-akimbo
-akin
-ala
-alabama
-alabaster
-alacarte
-alack
-alacrity
-aladdin
-alanine
-alarm
-alarmed
-alarming
-alarmingly
-alarmism
-alarmist
-alarms
-alas
-alaska
-alaskan
-alb
-albania
-albany
-albatross
-albatrosses
-albeit
-albinism
-albino
-album
-albumen
-albumin
-albums
-alchemical
-alchemist
-alchemists
-alchemy
-alcohol
-alcoholic
-alcoholics
-alcoholism
-alcohols
-alcove
-alcoves
-aldehyde
-aldehydes
-alder
-alderman
-aldermen
-aldrin
-ale
-alehouse
-alembic
-alert
-alerted
-alerting
-alertly
-alertness
-alerts
-ales
-alfalfa
-alfatah
-alga
-algae
-algal
-algebra
-algebraic
-algebraical
-algebraically
-algebraist
-algebras
-algeria
-algerian
-algiers
-algorithm
-algorithmic
-algorithmically
-algorithms
-alias
-aliases
-alibaba
-alibi
-alibis
-alien
-alienate
-alienated
-alienates
-alienating
-alienation
-aliened
-aliening
-aliens
-alight
-alighted
-alighting
-alights
-align
-aligned
-aligning
-alignment
-alignments
-aligns
-alike
-alimentary
-alimony
-aline
-alined
-alines
-alining
-aliphatic
-aliquot
-aliquots
-alive
-alkali
-alkalic
-alkaline
-alkalinity
-alkalis
-alkalise
-alkaloid
-alkaloids
-alkanes
-alkyl
-all
-allay
-allayed
-allaying
-allays
-allegation
-allegations
-allege
-alleged
-allegedly
-alleges
-allegiance
-allegiances
-alleging
-allegorical
-allegorically
-allegories
-allegory
-allegri
-allegro
-allele
-alleles
-allelic
-allergen
-allergens
-allergic
-allergies
-allergy
-alleviate
-alleviated
-alleviates
-alleviating
-alleviation
-alleviations
-alley
-alleys
-alleyway
-alleyways
-alliance
-alliances
-allied
-allies
-alligator
-alligators
-alliterate
-alliterated
-alliterating
-alliteration
-alliterations
-alliterative
-allocatable
-allocate
-allocated
-allocates
-allocating
-allocation
-allocations
-allocator
-allocators
-allophones
-allot
-allotment
-allotments
-allotrope
-allotropic
-allots
-allotted
-allotting
-allow
-allowable
-allowance
-allowances
-allowed
-allowing
-allows
-alloy
-alloyed
-alloying
-alloys
-allude
-alluded
-alludes
-alluding
-allure
-allured
-allurement
-allurements
-allures
-alluring
-alluringly
-allusion
-allusions
-allusive
-alluvia
-alluvial
-alluvium
-ally
-allying
-almanac
-almanacs
-almighty
-almond
-almonds
-almost
-alms
-almshouse
-almshouses
-aloe
-aloes
-aloft
-aloha
-alone
-aloneness
-along
-alongside
-aloof
-aloofness
-aloud
-alp
-alpaca
-alpacas
-alpha
-alphabet
-alphabetic
-alphabetical
-alphabetically
-alphabets
-alphanumeric
-alphas
-alpine
-alps
-already
-alright
-also
-alt
-altar
-altarpiece
-altarpieces
-altars
-alter
-alterable
-alteration
-alterations
-altercate
-altercation
-altercations
-altered
-alterego
-altering
-alternate
-alternated
-alternately
-alternates
-alternating
-alternation
-alternations
-alternative
-alternatively
-alternatives
-alternator
-alternators
-alters
-although
-altimeter
-altimeters
-altitude
-altitudes
-alto
-altogether
-altruism
-altruist
-altruistic
-altruistically
-alts
-alum
-aluminium
-aluminum
-alumni
-alumnus
-alveolar
-alveoli
-always
-am
-amalgam
-amalgamate
-amalgamated
-amalgamates
-amalgamating
-amalgamation
-amalgamations
-amalgams
-amanuensis
-amass
-amassed
-amasses
-amassing
-amateur
-amateurish
-amateurishly
-amateurishness
-amateurism
-amateurs
-amatory
-amaze
-amazed
-amazement
-amazes
-amazing
-amazingly
-amazon
-amazons
-ambassador
-ambassadorial
-ambassadors
-amber
-ambergris
-ambiance
-ambidextrous
-ambience
-ambient
-ambiguities
-ambiguity
-ambiguous
-ambiguously
-ambit
-ambition
-ambitions
-ambitious
-ambitiously
-ambivalence
-ambivalent
-ambivalently
-amble
-ambled
-ambler
-ambles
-ambling
-ambrosia
-ambulance
-ambulances
-ambulant
-ambulate
-ambulatory
-ambuscade
-ambuscades
-ambush
-ambushed
-ambushers
-ambushes
-ambushing
-ameliorate
-ameliorated
-ameliorates
-ameliorating
-amelioration
-amen
-amenability
-amenable
-amend
-amendable
-amended
-amending
-amendment
-amendments
-amends
-amenities
-amenity
-amenorrhoea
-amens
-america
-american
-americans
-americium
-amethyst
-amethystine
-amethysts
-amiability
-amiable
-amiableness
-amiably
-amicability
-amicable
-amicably
-amid
-amide
-amidships
-amidst
-amigo
-amine
-amines
-amino
-amir
-amiss
-amity
-amman
-ammeter
-ammeters
-ammo
-ammonia
-ammonites
-ammonium
-ammunition
-amnesia
-amnesiac
-amnesic
-amnesties
-amnesty
-amniotic
-amoeba
-amoebae
-amoebic
-amok
-among
-amongst
-amoral
-amorality
-amorist
-amorous
-amorously
-amorphous
-amortisation
-amortise
-amortised
-amount
-amounted
-amounting
-amounts
-amour
-amours
-amp
-ampere
-amperes
-ampersand
-ampersands
-amphetamine
-amphetamines
-amphibia
-amphibian
-amphibians
-amphibious
-amphitheatre
-amphitheatres
-amphora
-ample
-ampler
-amplification
-amplifications
-amplified
-amplifier
-amplifiers
-amplifies
-amplify
-amplifying
-amplitude
-amplitudes
-amply
-ampoules
-amps
-ampule
-ampules
-ampuls
-amputate
-amputated
-amputating
-amputation
-amputations
-amputee
-amputees
-amuck
-amulet
-amulets
-amuse
-amused
-amusement
-amusements
-amuses
-amusing
-amusingly
-an
-ana
-anabolic
-anachronism
-anachronisms
-anachronistic
-anachronistically
-anaconda
-anacondas
-anaemia
-anaemic
-anaerobic
-anaerobically
-anaesthesia
-anaesthetic
-anaesthetics
-anaesthetise
-anaesthetised
-anaesthetising
-anaesthetist
-anaesthetists
-anagram
-anagrammatic
-anagrammatically
-anagrams
-anal
-analgesia
-analgesic
-analgesics
-anally
-analogical
-analogies
-analogise
-analogous
-analogously
-analogue
-analogues
-analogy
-analysable
-analyse
-analysed
-analyser
-analysers
-analyses
-analysing
-analysis
-analyst
-analysts
-analytic
-analytical
-analytically
-anamorphic
-ananas
-anaphora
-anaphoric
-anarchic
-anarchical
-anarchism
-anarchist
-anarchistic
-anarchists
-anarchy
-anathema
-anatomic
-anatomical
-anatomically
-anatomies
-anatomist
-anatomists
-anatomy
-ancestor
-ancestors
-ancestral
-ancestries
-ancestry
-anchor
-anchorage
-anchorages
-anchored
-anchoring
-anchorite
-anchors
-anchovies
-anchovy
-ancient
-anciently
-ancients
-ancillary
-and
-andante
-andes
-andrew
-androgynous
-android
-androids
-anecdotal
-anecdotally
-anecdote
-anecdotes
-anechoic
-anemia
-anemic
-anemone
-anemones
-anergy
-aneroid
-aneurysm
-aneurysms
-anew
-angel
-angelic
-angelica
-angels
-angelus
-anger
-angered
-angering
-angers
-angina
-anginal
-angioplasty
-angle
-angled
-anglepoise
-angler
-anglers
-angles
-anglian
-anglican
-angling
-angola
-angolan
-angolans
-angora
-angoras
-angrier
-angriest
-angrily
-angry
-angst
-angstroms
-anguish
-anguished
-anguishes
-angular
-angularity
-anhydrous
-anil
-aniline
-animal
-animals
-animate
-animated
-animatedly
-animates
-animating
-animation
-animations
-animator
-animators
-animism
-animist
-animists
-animosities
-animosity
-animus
-anion
-anionic
-anions
-anise
-aniseed
-aniseeds
-anisotropic
-anisotropies
-anisotropy
-ankara
-ankle
-ankles
-anklet
-anklets
-anna
-annal
-annals
-anneal
-annealed
-annealer
-annealing
-annex
-annexation
-annexations
-annexe
-annexed
-annexes
-annexing
-annihilate
-annihilated
-annihilates
-annihilating
-annihilation
-anniversaries
-anniversary
-annotate
-annotated
-annotates
-annotating
-annotation
-annotations
-announce
-announced
-announcement
-announcements
-announcer
-announcers
-announces
-announcing
-annoy
-annoyance
-annoyances
-annoyed
-annoyer
-annoyers
-annoying
-annoyingly
-annoys
-annual
-annualised
-annually
-annuals
-annuities
-annuity
-annul
-annular
-annuli
-annulled
-annulling
-annulment
-annuls
-annulus
-annunciation
-anode
-anodes
-anodised
-anodyne
-anoint
-anointed
-anointing
-anoints
-anomalies
-anomalous
-anomalously
-anomaly
-anomic
-anon
-anonym
-anonymity
-anonymous
-anonymously
-anonyms
-anorak
-anoraks
-anorexia
-anorexic
-another
-answer
-answerable
-answered
-answerer
-answering
-answers
-ant
-antacid
-antacids
-antagonise
-antagonised
-antagonises
-antagonising
-antagonism
-antagonisms
-antagonist
-antagonistic
-antagonists
-ante
-anteater
-anteaters
-antecedent
-antecedents
-antechamber
-antedate
-antedates
-antedating
-antediluvian
-antelope
-antelopes
-antenatal
-antenna
-antennae
-antennas
-anterior
-anteriorly
-anteroom
-anthem
-anthems
-anther
-anthologies
-anthologise
-anthologised
-anthology
-anthracite
-anthrax
-anthropic
-anthropocentric
-anthropogenic
-anthropogenically
-anthropoid
-anthropological
-anthropologist
-anthropologists
-anthropology
-anthropometric
-anthropomorphic
-anthropomorphising
-anthropomorphism
-anti
-antiabortionists
-antiaircraft
-antibiotic
-antibiotics
-antibodies
-antibody
-antic
-anticipate
-anticipated
-anticipates
-anticipating
-anticipation
-anticipations
-anticipative
-anticipatory
-anticlimax
-anticlockwise
-anticoagulants
-anticonstitutional
-antics
-anticyclone
-antidepressant
-antidepressants
-antidote
-antidotes
-antifreeze
-antigen
-antigenic
-antigens
-antihistamines
-antilope
-antimatter
-antimony
-antioxidants
-antiparticles
-antipathetic
-antipathies
-antipathy
-antipodes
-antiquarian
-antiquarianism
-antiquarians
-antiquaries
-antiquary
-antiquated
-antique
-antiques
-antiquities
-antiquity
-antiseptic
-antiseptics
-antisocial
-antistatic
-antisymmetric
-antisymmetry
-antitheses
-antithesis
-antithetic
-antithetical
-antithetically
-antitrust
-antiviral
-antler
-antlers
-antlion
-antlions
-antonym
-antonyms
-antral
-antrum
-ants
-antwerp
-anus
-anvil
-anvils
-anxieties
-anxiety
-anxious
-anxiously
-any
-anybody
-anyhow
-anymore
-anyone
-anyplace
-anything
-anyway
-anyways
-anywhere
-aorist
-aorta
-aortas
-aortic
-apace
-apache
-apaches
-apart
-apartment
-apartments
-apartness
-apathetic
-apathetically
-apathy
-ape
-aped
-apeman
-aperies
-aperiodic
-aperiodically
-aperitif
-aperitifs
-aperture
-apertures
-apery
-apes
-apex
-aphasia
-aphelion
-aphid
-aphids
-aphorism
-aphorisms
-aphorist
-aphoristic
-aphrodisiac
-aphrodisiacs
-apian
-apiaries
-apiarist
-apiary
-apiece
-aping
-apis
-apish
-aplenty
-aplomb
-apnea
-apnoea
-apocalypse
-apocalyptic
-apocryphal
-apogee
-apolitical
-apollo
-apologetic
-apologetically
-apologia
-apologies
-apologise
-apologised
-apologises
-apologising
-apologist
-apologists
-apology
-apoplectic
-apoplexy
-apostasy
-apostate
-apostates
-apostle
-apostles
-apostolate
-apostolic
-apostrophe
-apostrophes
-apostrophised
-apothecaries
-apothecary
-apotheosis
-appal
-appalled
-appalling
-appallingly
-appals
-apparatchik
-apparatchiks
-apparatus
-apparatuses
-apparel
-apparelled
-apparent
-apparently
-apparition
-apparitions
-appeal
-appealed
-appealing
-appealingly
-appeals
-appear
-appearance
-appearances
-appeared
-appearing
-appears
-appease
-appeased
-appeasement
-appeaser
-appeasers
-appeases
-appeasing
-appellant
-appellants
-appellate
-appellation
-appellations
-append
-appendage
-appendages
-appended
-appendices
-appendicitis
-appending
-appendix
-appends
-appertain
-appertained
-appertaining
-appetiser
-appetising
-appetite
-appetites
-applaud
-applauded
-applauding
-applauds
-applause
-apple
-applecart
-applepie
-apples
-applet
-appliance
-appliances
-applicability
-applicable
-applicant
-applicants
-application
-applications
-applicative
-applicator
-applicators
-applied
-applier
-applies
-applique
-apply
-applying
-appoint
-appointed
-appointee
-appointees
-appointing
-appointment
-appointments
-appoints
-apportion
-apportioned
-apportioning
-apportionment
-apportions
-apposite
-apposition
-appraisal
-appraisals
-appraise
-appraised
-appraisees
-appraiser
-appraisers
-appraises
-appraising
-appraisingly
-appreciable
-appreciably
-appreciate
-appreciated
-appreciates
-appreciating
-appreciation
-appreciations
-appreciative
-appreciatively
-apprehend
-apprehended
-apprehending
-apprehends
-apprehension
-apprehensions
-apprehensive
-apprehensively
-apprentice
-apprenticed
-apprentices
-apprenticeship
-apprenticeships
-apprise
-apprised
-apprising
-appro
-approach
-approachability
-approachable
-approached
-approaches
-approaching
-approbation
-appropriate
-appropriated
-appropriately
-appropriateness
-appropriates
-appropriating
-appropriation
-appropriations
-approval
-approvals
-approve
-approved
-approves
-approving
-approvingly
-approximate
-approximated
-approximately
-approximates
-approximating
-approximation
-approximations
-apricot
-apricots
-april
-apriori
-apron
-aprons
-apropos
-apse
-apses
-apsis
-apt
-aptest
-aptitude
-aptitudes
-aptly
-aptness
-aqua
-aqualung
-aquamarine
-aquanaut
-aquaria
-aquarium
-aquariums
-aquatic
-aquatics
-aqueduct
-aqueducts
-aqueous
-aquifer
-aquifers
-aquiline
-arab
-arabesque
-arabesques
-arabia
-arabian
-arabians
-arabic
-arable
-arabs
-arachnid
-arachnids
-arachnoid
-arachnophobia
-arak
-araks
-ararat
-arbiter
-arbiters
-arbitrage
-arbitrageur
-arbitrageurs
-arbitral
-arbitrarily
-arbitrariness
-arbitrary
-arbitrate
-arbitrated
-arbitrates
-arbitrating
-arbitration
-arbitrations
-arbitrator
-arbitrators
-arbor
-arboreal
-arboretum
-arbour
-arc
-arcade
-arcades
-arcadia
-arcading
-arcana
-arcane
-arcanely
-arcaneness
-arced
-arch
-archaeological
-archaeologically
-archaeologist
-archaeologists
-archaeology
-archaeopteryx
-archaic
-archaism
-archaisms
-archangel
-archangels
-archbishop
-archbishops
-archdeacon
-archdeaconry
-archdeacons
-archdiocese
-archduke
-archdukes
-arched
-archenemies
-archenemy
-archer
-archers
-archery
-arches
-archetypal
-archetype
-archetypes
-archetypical
-arching
-archipelago
-architect
-architectonic
-architects
-architectural
-architecturally
-architecture
-architectures
-architrave
-architraves
-archival
-archive
-archived
-archives
-archiving
-archivist
-archivists
-archly
-archness
-archway
-archways
-arcing
-arcs
-arctic
-ardency
-ardent
-ardently
-ardour
-arduous
-are
-area
-areal
-areas
-arena
-arenas
-arent
-argent
-argon
-argot
-arguable
-arguably
-argue
-argued
-arguer
-arguers
-argues
-arguing
-argument
-argumentation
-argumentative
-argumentatively
-arguments
-argus
-aria
-arias
-arid
-aridity
-aridness
-aright
-arise
-arisen
-arises
-arising
-aristocracies
-aristocracy
-aristocrat
-aristocratic
-aristocrats
-arithmetic
-arithmetical
-arithmetically
-arizona
-ark
-arkansas
-arks
-arm
-armada
-armadas
-armadillo
-armament
-armaments
-armature
-armatures
-armband
-armbands
-armchair
-armchairs
-armed
-armenia
-armful
-armfuls
-armhole
-armholes
-armies
-arming
-armistice
-armless
-armlet
-armlets
-armour
-armoured
-armourer
-armourers
-armouries
-armourplated
-armoury
-armpit
-armpits
-armrest
-arms
-army
-aroma
-aromas
-aromatherapist
-aromatherapy
-aromatic
-aromaticity
-aromatics
-arose
-around
-arousal
-arousals
-arouse
-aroused
-arouses
-arousing
-arrange
-arrangeable
-arranged
-arrangement
-arrangements
-arranger
-arranges
-arranging
-arrant
-arrases
-array
-arrayed
-arraying
-arrays
-arrears
-arrest
-arrestable
-arrested
-arrester
-arresting
-arrests
-arrhythmia
-arrival
-arrivals
-arrive
-arrived
-arriver
-arrives
-arriving
-arrogance
-arrogant
-arrogantly
-arrow
-arrowed
-arrowhead
-arrowheads
-arrowing
-arrowroot
-arrows
-arsenal
-arsenals
-arsenic
-arsenide
-arson
-arsonist
-arsonists
-art
-artefact
-artefacts
-artefactual
-arterial
-arteries
-artery
-artful
-artfully
-artfulness
-arthritic
-arthritis
-arthropod
-arthropods
-arthur
-artichoke
-artichokes
-article
-articled
-articles
-articulacy
-articular
-articulate
-articulated
-articulately
-articulates
-articulating
-articulation
-articulations
-articulatory
-artier
-artifice
-artificial
-artificiality
-artificially
-artillery
-artisan
-artisans
-artist
-artiste
-artistes
-artistic
-artistically
-artistry
-artists
-artless
-artlessly
-artlessness
-arts
-artwork
-artworks
-arty
-arum
-as
-asbestos
-asbestosis
-ascend
-ascendancy
-ascendant
-ascended
-ascendency
-ascender
-ascending
-ascends
-ascension
-ascensions
-ascent
-ascents
-ascertain
-ascertainable
-ascertained
-ascertaining
-ascertainment
-ascertains
-ascetic
-asceticism
-ascetics
-ascorbic
-ascribable
-ascribe
-ascribed
-ascribes
-ascribing
-ascription
-ascriptions
-aseptic
-asexual
-ash
-ashamed
-ashamedly
-ashbin
-ashbins
-ashcans
-ashen
-ashes
-ashore
-ashtray
-ashtrays
-ashy
-asia
-asian
-asians
-asiatic
-aside
-asides
-asinine
-ask
-askance
-asked
-askers
-askew
-asking
-asks
-aslant
-asleep
-asocial
-asp
-asparagus
-aspect
-aspects
-asperity
-aspersion
-aspersions
-asphalt
-asphyxia
-asphyxiate
-asphyxiated
-asphyxiation
-aspic
-aspidistra
-aspirant
-aspirants
-aspirate
-aspirated
-aspirates
-aspirating
-aspiration
-aspirational
-aspirations
-aspirators
-aspire
-aspired
-aspires
-aspirin
-aspiring
-aspirins
-asps
-ass
-assail
-assailable
-assailant
-assailants
-assailed
-assailing
-assails
-assassin
-assassinate
-assassinated
-assassinating
-assassination
-assassinations
-assassins
-assault
-assaulted
-assaulting
-assaults
-assay
-assayed
-assayer
-assays
-assegai
-assegais
-assemblage
-assemblages
-assemble
-assembled
-assembler
-assemblers
-assembles
-assemblies
-assembling
-assembly
-assent
-assented
-assenting
-assents
-assert
-asserted
-asserting
-assertion
-assertions
-assertive
-assertively
-assertiveness
-asserts
-asses
-assess
-assessable
-assessed
-assesses
-assessing
-assessment
-assessments
-assessor
-assessors
-asset
-assets
-assiduity
-assiduous
-assiduously
-assign
-assignable
-assignation
-assignations
-assigned
-assignees
-assigner
-assigning
-assignment
-assignments
-assigns
-assimilable
-assimilate
-assimilated
-assimilates
-assimilating
-assimilation
-assist
-assistance
-assistant
-assistants
-assisted
-assisting
-assists
-assizes
-associate
-associated
-associates
-associateship
-associating
-association
-associational
-associations
-associative
-associatively
-associativity
-assonance
-assort
-assorted
-assortment
-assortments
-assuage
-assuaged
-assuages
-assuaging
-assume
-assumed
-assumes
-assuming
-assumption
-assumptions
-assurance
-assurances
-assure
-assured
-assuredly
-assures
-assuring
-assyria
-assyrian
-aster
-asterisk
-asterisked
-asterisks
-astern
-asteroid
-asteroids
-asters
-asthma
-asthmatic
-asthmatics
-astigmatic
-astigmatism
-astir
-astonish
-astonished
-astonishes
-astonishing
-astonishingly
-astonishment
-astound
-astounded
-astounding
-astoundingly
-astounds
-astraddle
-astral
-astrally
-astray
-astride
-astringent
-astrolabe
-astrolabes
-astrologer
-astrologers
-astrological
-astrology
-astronaut
-astronautical
-astronautics
-astronauts
-astronomer
-astronomers
-astronomic
-astronomical
-astronomically
-astronomy
-astrophysical
-astrophysicist
-astrophysicists
-astrophysics
-astute
-astutely
-astuteness
-asunder
-aswan
-asylum
-asylums
-asymmetric
-asymmetrical
-asymmetrically
-asymmetries
-asymmetry
-asymptomatic
-asymptote
-asymptotes
-asymptotic
-asymptotically
-asynchronous
-asynchronously
-at
-atavism
-atavistic
-ate
-atelier
-atheism
-atheist
-atheistic
-atheistically
-atheists
-athena
-athens
-atherosclerosis
-athlete
-athletes
-athletic
-athletically
-athleticism
-athletics
-atlanta
-atlantic
-atlantis
-atlas
-atlases
-atmosphere
-atmospheres
-atmospheric
-atmospherically
-atmospherics
-atoll
-atolls
-atom
-atombomb
-atomic
-atomically
-atomicity
-atomisation
-atomised
-atomistic
-atoms
-atonal
-atonality
-atone
-atoned
-atonement
-atones
-atonic
-atoning
-atop
-atrial
-atrium
-atrocious
-atrociously
-atrocities
-atrocity
-atrophied
-atrophies
-atrophy
-atrophying
-atropine
-attach
-attachable
-attache
-attached
-attaches
-attaching
-attachment
-attachments
-attack
-attacked
-attacker
-attackers
-attacking
-attacks
-attain
-attainable
-attained
-attaining
-attainment
-attainments
-attains
-attempt
-attempted
-attempting
-attempts
-attend
-attendance
-attendances
-attendant
-attendants
-attended
-attendees
-attender
-attenders
-attending
-attends
-attention
-attentional
-attentions
-attentive
-attentively
-attentiveness
-attenuate
-attenuated
-attenuates
-attenuating
-attenuation
-attenuator
-attenuators
-attest
-attestation
-attested
-attesting
-attests
-attic
-attics
-attila
-attire
-attired
-attiring
-attitude
-attitudes
-attitudinal
-attorney
-attorneys
-attract
-attracted
-attracting
-attraction
-attractions
-attractive
-attractively
-attractiveness
-attractor
-attractors
-attracts
-attributable
-attribute
-attributed
-attributes
-attributing
-attribution
-attributions
-attributive
-attrition
-attritional
-attune
-attuned
-atypical
-atypically
-aubergine
-aubergines
-auburn
-auction
-auctioned
-auctioneer
-auctioneers
-auctioning
-auctions
-audacious
-audaciously
-audacity
-audibility
-audible
-audibly
-audience
-audiences
-audio
-audiovisual
-audit
-audited
-auditing
-audition
-auditioned
-auditioning
-auditions
-auditive
-auditor
-auditorium
-auditors
-auditory
-audits
-auger
-augers
-augite
-augment
-augmentation
-augmentations
-augmented
-augmenting
-augments
-augur
-augured
-augurs
-augury
-august
-augustus
-auk
-auks
-aunt
-auntie
-aunties
-aunts
-aupair
-aupairs
-aura
-aural
-aurally
-auras
-aurevoir
-auric
-auriculas
-aurora
-aurorae
-auroral
-auroras
-auspice
-auspices
-auspicious
-auspiciously
-aussie
-aussies
-austere
-austerely
-austerity
-austral
-australian
-austria
-autarchy
-auteur
-authentic
-authentically
-authenticate
-authenticated
-authenticates
-authenticating
-authentication
-authenticator
-authenticators
-authenticity
-author
-authored
-authoress
-authorial
-authoring
-authorisation
-authorisations
-authorise
-authorised
-authorises
-authorising
-authoritarian
-authoritarianism
-authoritarians
-authoritative
-authoritatively
-authorities
-authority
-authors
-authorship
-autism
-autistic
-auto
-autobahn
-autobahns
-autobiographical
-autobiographically
-autobiographies
-autobiography
-autocracies
-autocracy
-autocrat
-autocratic
-autocratically
-autocrats
-autocue
-autograph
-autographed
-autographing
-autographs
-autoignition
-autoimmune
-automat
-automata
-automate
-automated
-automates
-automatic
-automatically
-automatics
-automating
-automation
-automaton
-automats
-automobile
-automorphism
-automorphisms
-automotive
-autonomic
-autonomous
-autonomously
-autonomy
-autopilot
-autopsies
-autopsy
-autosuggestion
-autumn
-autumnal
-autumns
-auxiliaries
-auxiliary
-avail
-availabilities
-availability
-available
-availed
-availing
-avails
-avalanche
-avalanches
-avalanching
-avantgarde
-avarice
-avaricious
-avariciousness
-ave
-avenge
-avenged
-avenger
-avengers
-avenges
-avenging
-avens
-avenue
-avenues
-aver
-average
-averaged
-averagely
-averages
-averaging
-averred
-averring
-avers
-averse
-aversion
-aversions
-aversive
-avert
-averted
-averting
-averts
-avian
-aviaries
-aviary
-aviate
-aviation
-aviator
-aviators
-avid
-avidity
-avidly
-avionics
-avocado
-avoid
-avoidable
-avoidance
-avoided
-avoiding
-avoids
-avoirdupois
-avow
-avowal
-avowals
-avowed
-avowedly
-avowing
-avulsion
-avuncular
-await
-awaited
-awaiting
-awaits
-awake
-awaken
-awakened
-awakening
-awakenings
-awakens
-awakes
-awaking
-award
-awarded
-awarding
-awards
-aware
-awareness
-awash
-away
-awe
-awed
-aweless
-awesome
-awesomely
-awesomeness
-awestruck
-awful
-awfully
-awfulness
-awhile
-awkward
-awkwardest
-awkwardly
-awkwardness
-awls
-awn
-awning
-awnings
-awoke
-awoken
-awol
-awry
-axe
-axed
-axehead
-axeheads
-axeman
-axes
-axial
-axially
-axillary
-axing
-axiom
-axiomatic
-axiomatically
-axiomatising
-axioms
-axis
-axle
-axles
-axolotl
-axon
-axons
-aye
-ayurvedic
-azalea
-azaleas
-azimuth
-azimuthal
-azores
-aztec
-aztecs
-azure
-baa
-baaing
-baal
-babas
-babble
-babbled
-babbler
-babblers
-babbles
-babbling
-babe
-babel
-babes
-babies
-baboon
-baboons
-baby
-babyface
-babyhood
-babying
-babyish
-babylon
-babysit
-babysitter
-babysitters
-babysitting
-baccarat
-bacchus
-bach
-bachelor
-bachelors
-bacilli
-bacillus
-back
-backache
-backbench
-backbencher
-backbenchers
-backbone
-backbones
-backchat
-backdate
-backdated
-backdrop
-backed
-backer
-backers
-backfire
-backfired
-backfires
-backfiring
-backgammon
-background
-backgrounds
-backhand
-backhanded
-backing
-backlash
-backless
-backlight
-backlit
-backlog
-backlogs
-backpack
-backpacker
-backpackers
-backpacking
-backpacks
-backpedal
-backpedalled
-backpedalling
-backrest
-backs
-backseat
-backside
-backsides
-backslapping
-backslash
-backsliding
-backspace
-backspaces
-backspacing
-backstabbing
-backstage
-backstairs
-backstreet
-backstreets
-backstroke
-backtrack
-backtracked
-backtracking
-backtracks
-backup
-backups
-backward
-backwardness
-backwards
-backwash
-backwater
-backwaters
-backwoods
-backwoodsmen
-backyard
-bacon
-bacteria
-bacterial
-bactericidal
-bacteriological
-bacteriologist
-bacteriologists
-bacteriology
-bacteriophage
-bacterium
-bad
-baddy
-bade
-bader
-badge
-badged
-badger
-badgered
-badgering
-badgers
-badges
-badinage
-badlands
-badly
-badminton
-badness
-badtempered
-baffle
-baffled
-bafflement
-baffler
-baffles
-baffling
-bafflingly
-bag
-bagatelle
-bagdad
-bagels
-bagful
-bagfuls
-baggage
-baggages
-bagged
-bagger
-baggier
-baggiest
-bagging
-baggy
-baghdad
-bagman
-bagmen
-bagpipe
-bagpiper
-bagpipes
-bags
-baguette
-baguettes
-bah
-bahamas
-bail
-bailed
-bailiff
-bailiffs
-bailing
-bailiwick
-bailout
-bails
-bait
-baited
-baiters
-baiting
-baitings
-baits
-bake
-baked
-bakehouse
-baker
-bakeries
-bakers
-bakery
-bakes
-baking
-bakings
-baklavas
-balaclava
-balaclavas
-balalaika
-balance
-balanced
-balancer
-balances
-balancing
-balconies
-balcony
-bald
-balder
-balderdash
-baldest
-balding
-baldly
-baldness
-baldy
-bale
-baled
-baleen
-baleful
-balefully
-bales
-bali
-baling
-ball
-ballad
-ballade
-ballades
-ballads
-ballast
-ballasts
-ballbearing
-ballbearings
-ballerina
-ballerinas
-ballet
-balletic
-ballets
-ballistic
-ballistics
-balloon
-ballooned
-ballooning
-balloonist
-balloonists
-balloons
-ballot
-balloted
-balloting
-ballots
-ballpen
-ballpens
-ballpoint
-ballroom
-ballrooms
-balls
-ballyhoo
-balm
-balmier
-balmiest
-balmoral
-balms
-balmy
-baloney
-balsa
-balsam
-baltic
-baluster
-balusters
-balustrade
-balustraded
-balustrades
-bambino
-bamboo
-bamboos
-bamboozle
-bamboozled
-bamboozles
-ban
-banal
-banalities
-banality
-banana
-bananas
-band
-bandage
-bandaged
-bandages
-bandaging
-bandanna
-banded
-bandied
-bandier
-bandiest
-banding
-bandit
-banditry
-bandits
-bandpass
-bands
-bandstand
-bandwagon
-bandwagons
-bandwidth
-bandwidths
-bane
-bang
-banged
-banger
-bangers
-banging
-bangkok
-bangle
-bangles
-bangs
-banish
-banished
-banishes
-banishing
-banishment
-banister
-banisters
-banjo
-bank
-bankable
-banked
-banker
-bankers
-banking
-banknote
-banknotes
-bankrupt
-bankruptcies
-bankruptcy
-bankrupted
-bankrupting
-bankrupts
-banks
-banned
-banner
-banners
-banning
-bannister
-bannisters
-banns
-banquet
-banqueting
-banquets
-bans
-banshee
-banshees
-bantam
-bantams
-bantamweight
-banter
-bantered
-bantering
-baobab
-baobabs
-bap
-baptise
-baptised
-baptises
-baptising
-baptism
-baptismal
-baptisms
-baptist
-baptists
-bar
-barb
-barbarian
-barbarians
-barbaric
-barbarically
-barbarism
-barbarities
-barbarity
-barbarous
-barbarously
-barbecue
-barbecued
-barbecues
-barbed
-barbell
-barbels
-barber
-barbers
-barbie
-barbiturate
-barbiturates
-barbs
-barcode
-bard
-bards
-bare
-bareback
-bared
-barefaced
-barefoot
-barefooted
-barely
-bareness
-barer
-bares
-barest
-bargain
-bargained
-bargainers
-bargaining
-bargains
-barge
-barged
-bargepole
-barges
-barging
-baring
-baritone
-baritones
-barium
-bark
-barked
-barker
-barkers
-barking
-barks
-barky
-barley
-barleycorn
-barleycorns
-barmaid
-barmaids
-barman
-barmen
-barn
-barnacle
-barnacles
-barns
-barnstorming
-barnyard
-barometer
-barometers
-barometric
-baron
-baronage
-baroness
-baronesses
-baronet
-baronets
-baronial
-baronies
-barons
-barony
-baroque
-barrack
-barracking
-barracks
-barracuda
-barrage
-barrages
-barre
-barred
-barrel
-barrelled
-barrels
-barren
-barrenness
-barricade
-barricaded
-barricades
-barrier
-barriers
-barring
-barrister
-barristers
-barrow
-barrows
-bars
-bart
-bartender
-barter
-bartered
-barterer
-bartering
-basal
-basalt
-basaltic
-basalts
-base
-baseball
-baseballs
-based
-baseless
-baseline
-baselines
-basely
-basement
-basements
-baseness
-baser
-bases
-basest
-bash
-bashed
-bashes
-bashful
-bashfully
-bashfulness
-bashing
-basic
-basically
-basics
-basify
-basil
-basilica
-basilicas
-basilisk
-basilisks
-basin
-basinful
-basing
-basins
-basis
-bask
-basked
-basket
-basketball
-basketful
-basketry
-baskets
-basking
-basks
-basque
-basrelief
-basreliefs
-bass
-basses
-bassist
-bassoon
-bassoons
-bastard
-bastardisation
-bastardise
-bastardised
-bastards
-bastardy
-baste
-basted
-basting
-bastion
-bastions
-bat
-batch
-batched
-batches
-batching
-bate
-bated
-bates
-bath
-bathe
-bathed
-bather
-bathers
-bathes
-bathetic
-bathhouse
-bathing
-bathos
-bathrobe
-bathroom
-bathrooms
-baths
-bathtub
-bathtubs
-bathurst
-bathwater
-batik
-batiks
-bating
-batman
-batmen
-baton
-batons
-bats
-batsman
-batsmen
-battalion
-battalions
-batted
-batten
-battened
-battening
-battens
-batter
-battered
-batteries
-battering
-batters
-battery
-batting
-battle
-battleaxe
-battlecry
-battled
-battledress
-battlefield
-battlefields
-battleground
-battlegrounds
-battlement
-battlemented
-battlements
-battler
-battlers
-battles
-battleship
-battleships
-battling
-batty
-bauble
-baubles
-baud
-baulk
-baulked
-baulking
-baulks
-baulky
-bauxite
-bavaria
-bavarian
-bawdier
-bawdiest
-bawdy
-bawl
-bawled
-bawling
-bawls
-bay
-bayed
-baying
-bayonet
-bayonets
-bays
-bazaar
-bazaars
-bazooka
-bazookas
-be
-beach
-beachcomber
-beached
-beaches
-beachhead
-beaching
-beachside
-beachy
-beacon
-beaconed
-beacons
-bead
-beaded
-beadier
-beadiest
-beading
-beadings
-beadle
-beadles
-beads
-beadwork
-beady
-beadyeyed
-beagle
-beagles
-beak
-beaked
-beaker
-beakers
-beaks
-beam
-beamed
-beaming
-beams
-beamy
-bean
-beanbag
-beanery
-beanie
-beanpole
-beans
-beanstalk
-beanstalks
-beany
-bear
-bearable
-bearably
-beard
-bearded
-beardless
-beards
-bearer
-bearers
-bearing
-bearings
-bearish
-bears
-bearskin
-bearskins
-beast
-beastliest
-beastliness
-beastly
-beasts
-beat
-beaten
-beater
-beaters
-beatific
-beatification
-beatifications
-beatified
-beatifies
-beatify
-beating
-beatings
-beatitude
-beatitudes
-beatnik
-beatniks
-beats
-beatup
-beau
-beaus
-beauteous
-beautician
-beauties
-beautified
-beautifier
-beautifiers
-beautifies
-beautiful
-beautifully
-beautify
-beauts
-beauty
-beaux
-beaver
-beavering
-beavers
-bebop
-becalm
-becalmed
-became
-because
-beck
-beckon
-beckoned
-beckoning
-beckons
-becks
-become
-becomes
-becoming
-bed
-bedazzle
-bedazzled
-bedbug
-bedbugs
-bedchamber
-bedclothes
-bedcover
-bedded
-bedder
-bedding
-beddings
-bedecked
-bedecks
-bedevil
-bedevilled
-bedevilment
-bedevils
-bedfellow
-bedfellows
-bedlam
-bedlinen
-bedmaker
-bedmakers
-bedouin
-bedouins
-bedpan
-bedpans
-bedpost
-bedraggled
-bedridden
-bedrock
-bedroom
-bedrooms
-beds
-bedsheets
-bedside
-bedsit
-bedsitter
-bedsitters
-bedsore
-bedsores
-bedspread
-bedspreads
-bedstead
-bedsteads
-bedtime
-bedtimes
-bee
-beech
-beeches
-beechnut
-beechwood
-beef
-beefburger
-beefburgers
-beefcake
-beefeater
-beefier
-beefiest
-beefs
-beefy
-beehive
-beehives
-beekeepers
-beeline
-beelines
-been
-beep
-beeper
-beeping
-beeps
-beer
-beermat
-beermats
-beers
-beery
-bees
-beeswax
-beet
-beetle
-beetles
-beetroot
-beets
-befall
-befallen
-befalling
-befalls
-befell
-befit
-befits
-befitted
-befitting
-befog
-before
-beforehand
-befoul
-befriend
-befriended
-befriending
-befriends
-befuddle
-befuddled
-befuddling
-beg
-began
-begat
-beget
-begets
-begetting
-beggar
-beggared
-beggarly
-beggars
-beggary
-begged
-begging
-beggings
-begin
-beginner
-beginners
-beginning
-beginnings
-begins
-begone
-begonias
-begot
-begotten
-begrudge
-begrudged
-begrudgingly
-begs
-beguile
-beguiled
-beguilement
-beguiling
-begun
-behalf
-behave
-behaved
-behaves
-behaving
-behaviour
-behavioural
-behaviourally
-behaviourism
-behaviourist
-behaviourists
-behaviours
-behead
-beheaded
-beheading
-beheld
-behemoth
-behest
-behind
-behindhand
-behinds
-behold
-beholden
-beholder
-beholders
-beholding
-beholds
-behoved
-behoves
-beige
-beijing
-being
-beings
-beirut
-bejewel
-bejewelled
-bel
-belabour
-belated
-belatedly
-belatedness
-belay
-belayed
-belays
-belch
-belched
-belches
-belching
-beleaguered
-belfast
-belfries
-belfry
-belgian
-belgians
-belgium
-belgrade
-belie
-belied
-belief
-beliefs
-belies
-believability
-believable
-believably
-believe
-believed
-believer
-believers
-believes
-believing
-belike
-belittle
-belittled
-belittles
-belittling
-bell
-belladonna
-bellbottoms
-belle
-belled
-belles
-bellicose
-bellicosity
-bellies
-belligerence
-belligerent
-belligerently
-belligerents
-bellow
-bellowed
-bellowing
-bellows
-bells
-belly
-bellyful
-belong
-belonged
-belonging
-belongings
-belongs
-beloved
-below
-belt
-belted
-belting
-beltings
-belts
-belying
-bemoan
-bemoaned
-bemoaning
-bemoans
-bemuse
-bemused
-bemusedly
-bemusement
-ben
-bench
-benches
-benchmark
-benchmarking
-benchmarks
-bend
-bendable
-bended
-bender
-benders
-bending
-bendings
-bends
-beneath
-benediction
-benedictions
-benefaction
-benefactions
-benefactor
-benefactors
-benefactress
-benefice
-beneficence
-beneficent
-beneficial
-beneficially
-beneficiaries
-beneficiary
-benefit
-benefited
-benefiting
-benefits
-benelux
-benevolence
-benevolent
-benevolently
-bengal
-benighted
-benightedly
-benign
-benignity
-benignly
-benjamin
-bent
-benzene
-bequeath
-bequeathed
-bequeathing
-bequest
-bequests
-berate
-berated
-berating
-berber
-bereave
-bereaved
-bereavement
-bereavements
-bereaving
-bereft
-beret
-berets
-bergs
-berk
-berlin
-berliner
-bermuda
-bern
-berries
-berry
-berserk
-berth
-berthed
-berths
-beryl
-beryllium
-beseech
-beseeched
-beseeches
-beseeching
-beseechingly
-beset
-besets
-besetting
-beside
-besides
-besiege
-besieged
-besieging
-besmirch
-besot
-besotted
-bespattered
-bespeak
-bespeaking
-bespeaks
-bespectacled
-bespoke
-best
-bestial
-bestiality
-bestiary
-bestir
-bestirred
-bestirring
-bestknown
-bestow
-bestowal
-bestowals
-bestowed
-bestowing
-bestows
-bestride
-bestrode
-bests
-bestseller
-bestsellers
-bestselling
-bet
-beta
-betel
-betide
-betimes
-betoken
-betokened
-betokens
-betray
-betrayal
-betrayals
-betrayed
-betrayer
-betrayers
-betraying
-betrays
-betroth
-betrothal
-betrothed
-betroths
-bets
-betted
-better
-bettered
-bettering
-betterment
-betters
-betting
-between
-betwixt
-bevel
-bevelled
-bevelling
-bevels
-beverage
-beverages
-bevvy
-bevy
-bewail
-bewailed
-bewailing
-bewails
-beware
-bewhiskered
-bewilder
-bewildered
-bewildering
-bewilderingly
-bewilderment
-bewilders
-bewitch
-bewitched
-bewitching
-beyond
-biannual
-bias
-biased
-biases
-biasing
-biassed
-biasses
-biassing
-bib
-bible
-bibles
-biblical
-biblically
-biblicists
-bibliographic
-bibliographical
-bibliographies
-bibliography
-bibliophile
-bibs
-bicameral
-bicarb
-bicarbonate
-bicentenary
-bicentennial
-biceps
-bicker
-bickering
-bickerings
-bicycle
-bicycled
-bicycles
-bicycling
-bid
-bidden
-bidder
-bidders
-bidding
-biddings
-bide
-bided
-bides
-bidet
-biding
-bidirectional
-bids
-biennial
-biennials
-bier
-bifocal
-bifocals
-bifurcated
-bifurcation
-bifurcations
-big
-bigamist
-bigamists
-bigamous
-bigamy
-bigapple
-bigben
-bigger
-biggest
-biggish
-bigheads
-bigness
-bigot
-bigoted
-bigotry
-bigots
-bijou
-bijoux
-bike
-biker
-bikes
-biking
-bikini
-bikinis
-bilabial
-bilateral
-bilaterally
-bile
-biles
-bilge
-bilges
-bilharzia
-biliary
-bilingual
-bilingualism
-bilinguals
-bilious
-bill
-billable
-billboard
-billboards
-billed
-billet
-billeted
-billeting
-billets
-billiard
-billiards
-billing
-billings
-billion
-billionaire
-billionaires
-billions
-billionth
-billow
-billowed
-billowing
-billows
-billowy
-billposters
-bills
-billy
-biltong
-bimbo
-bimodal
-bimonthly
-bin
-binaries
-binary
-bind
-binder
-binders
-bindery
-binding
-bindings
-binds
-bindweed
-bing
-binge
-bingo
-binnacle
-binocular
-binoculars
-binodal
-binomial
-bins
-biochemical
-biochemically
-biochemist
-biochemistry
-biochemists
-biodegradable
-biodiversity
-bioengineering
-biofeedback
-biogeographical
-biographer
-biographers
-biographical
-biographically
-biographies
-biography
-biological
-biologically
-biologist
-biologists
-biology
-biomass
-biomedical
-biometric
-biometrics
-biometry
-biomorph
-bionic
-bionics
-biophysical
-biopsies
-biopsy
-biorhythm
-biorhythms
-bioscope
-biosphere
-biospheres
-biosynthesis
-biota
-biotechnological
-biotechnologist
-biotechnologists
-biotechnology
-biotic
-bipartisan
-bipartite
-biped
-bipedal
-bipedalism
-bipeds
-biplane
-biplanes
-bipolar
-birch
-birched
-birches
-bird
-birdbath
-birdbaths
-birdcage
-birdcages
-birdie
-birdies
-birds
-birdsong
-birdtables
-birdwatcher
-birdwatchers
-birdwatching
-birefringence
-birefringent
-birth
-birthday
-birthdays
-birthmark
-birthmarks
-birthplace
-birthrate
-birthright
-birthrights
-births
-biscuit
-biscuits
-biscuity
-bisect
-bisected
-bisecting
-bisects
-bisexual
-bisexuality
-bisexuals
-bishop
-bishopric
-bishoprics
-bishops
-bismarck
-bismuth
-bison
-bisons
-bissau
-bistable
-bistro
-bit
-bitch
-bitches
-bitchiness
-bitching
-bitchy
-bite
-biter
-biters
-bites
-biting
-bitingly
-bitmap
-bits
-bitten
-bitter
-bitterest
-bitterly
-bittern
-bitterness
-bitters
-bittersweet
-bittiness
-bitts
-bitty
-bitumen
-bituminous
-bivalve
-bivalves
-bivouac
-bivouacked
-bivouacs
-biweekly
-biz
-bizarre
-bizarrely
-bizarreness
-blab
-blabbed
-blabber
-blabbering
-blabs
-black
-blackball
-blackballed
-blackballing
-blackberries
-blackberry
-blackbird
-blackbirds
-blackboard
-blackboards
-blackcurrant
-blackcurrants
-blacked
-blacken
-blackened
-blackening
-blackens
-blacker
-blackest
-blackfly
-blackguard
-blackhead
-blackheads
-blacking
-blackish
-blackjack
-blackleg
-blacklist
-blacklisted
-blacklisting
-blacklists
-blackly
-blackmail
-blackmailed
-blackmailer
-blackmailers
-blackmailing
-blackmails
-blackness
-blackout
-blackouts
-blacks
-blacksea
-blackshirts
-blacksmith
-blacksmiths
-blackthorn
-bladder
-bladders
-blade
-bladed
-blades
-blah
-blame
-blameable
-blamed
-blameful
-blameless
-blamelessly
-blamelessness
-blames
-blameworthy
-blaming
-blanch
-blanched
-blanching
-blancmange
-bland
-blandest
-blandishments
-blandly
-blandness
-blank
-blanked
-blanker
-blanket
-blanketed
-blanketing
-blankets
-blanking
-blankly
-blankness
-blanks
-blare
-blared
-blares
-blaring
-blase
-blaspheme
-blasphemed
-blasphemer
-blasphemers
-blasphemies
-blaspheming
-blasphemous
-blasphemously
-blasphemy
-blast
-blasted
-blaster
-blasters
-blasting
-blasts
-blat
-blatancy
-blatant
-blatantly
-blaze
-blazed
-blazer
-blazers
-blazes
-blazing
-bleach
-bleached
-bleacher
-bleachers
-bleaches
-bleaching
-bleak
-bleaker
-bleakest
-bleakly
-bleakness
-blearily
-bleary
-blearyeyed
-bleat
-bleated
-bleating
-bleats
-bled
-bleed
-bleeder
-bleeders
-bleeding
-bleeds
-bleep
-bleeped
-bleeper
-bleeping
-bleeps
-blemish
-blemished
-blemishes
-blench
-blenched
-blend
-blended
-blender
-blenders
-blending
-blends
-blesbok
-bless
-blessed
-blessedness
-blesses
-blessing
-blessings
-blew
-blight
-blighted
-blighting
-blights
-blimp
-blimps
-blind
-blinded
-blinder
-blindest
-blindfold
-blindfolded
-blindfolds
-blinding
-blindingly
-blindly
-blindness
-blinds
-blink
-blinked
-blinker
-blinkered
-blinkering
-blinkers
-blinking
-blinks
-blip
-blips
-bliss
-blissful
-blissfully
-blister
-blistered
-blistering
-blisteringly
-blisters
-blithe
-blithely
-blithering
-blitz
-blitzkrieg
-blizzard
-blizzards
-bloat
-bloated
-bloating
-blob
-blobs
-bloc
-block
-blockade
-blockaded
-blockades
-blockading
-blockage
-blockages
-blockbuster
-blockbusters
-blockbusting
-blocked
-blockers
-blockhead
-blockheads
-blocking
-blockish
-blocks
-blocky
-blocs
-bloke
-blokes
-blond
-blonde
-blonder
-blondes
-blondest
-blondhaired
-blonds
-blood
-bloodbath
-bloodcurdling
-blooded
-bloodhound
-bloodhounds
-bloodied
-bloodier
-bloodies
-bloodiest
-bloodily
-bloodless
-bloodlessness
-bloodletting
-bloodline
-bloodlust
-bloodred
-bloods
-bloodshed
-bloodshot
-bloodsport
-bloodsports
-bloodstain
-bloodstained
-bloodstains
-bloodstock
-bloodstone
-bloodstream
-bloodsuckers
-bloodthirstier
-bloodthirstiest
-bloodthirsty
-bloodworm
-bloody
-bloodymindedness
-bloom
-bloomed
-bloomer
-bloomers
-blooming
-blooms
-bloomy
-blossom
-blossomed
-blossoming
-blossoms
-blot
-blotch
-blotched
-blotches
-blotchy
-blots
-blotted
-blotter
-blotting
-blouse
-blouses
-blow
-blowdried
-blowdrying
-blowed
-blower
-blowers
-blowfly
-blowing
-blowlamp
-blown
-blowpipe
-blowpipes
-blows
-blowtorch
-blowtorches
-blowup
-blubber
-blubbered
-blubbering
-bludgeon
-bludgeoned
-bludgeoning
-bludgeons
-blue
-bluebell
-bluebells
-blueberries
-blueberry
-bluebird
-bluebirds
-blueblooded
-bluebottle
-bluebottles
-bluecollar
-blueish
-bluemoon
-blueness
-bluenile
-blueprint
-blueprints
-bluer
-blues
-bluest
-bluesy
-bluff
-bluffed
-bluffer
-bluffers
-bluffing
-bluffs
-bluish
-blunder
-blunderbuss
-blundered
-blundering
-blunderings
-blunders
-blunt
-blunted
-blunter
-bluntest
-blunting
-bluntly
-bluntness
-blunts
-blur
-blurb
-blurbs
-blurred
-blurring
-blurry
-blurs
-blurt
-blurted
-blurting
-blurts
-blush
-blushed
-blusher
-blushers
-blushes
-blushing
-blushingly
-bluster
-blustered
-blustering
-blusters
-blustery
-bmus
-boa
-boar
-board
-boarded
-boarder
-boarders
-boardgames
-boarding
-boardings
-boardroom
-boardrooms
-boards
-boars
-boas
-boast
-boasted
-boaster
-boasters
-boastful
-boastfully
-boastfulness
-boasting
-boasts
-boat
-boated
-boater
-boaters
-boathouse
-boathouses
-boating
-boatload
-boatman
-boatmen
-boats
-boatswain
-bob
-bobbed
-bobbies
-bobbin
-bobbing
-bobbins
-bobble
-bobbles
-bobby
-bobcat
-bobs
-bobsled
-bobtail
-bobtails
-bode
-boded
-bodes
-bodice
-bodices
-bodied
-bodies
-bodiless
-bodily
-boding
-bodkin
-body
-bodybuilding
-bodyguard
-bodyguards
-bodywork
-boer
-boers
-boerwar
-boffin
-boffins
-bog
-bogey
-bogeyman
-bogeymen
-bogeys
-bogged
-boggiest
-bogging
-boggle
-boggled
-boggles
-boggling
-bogglingly
-boggy
-bogies
-bogs
-bogus
-bogy
-bohemian
-boil
-boiled
-boiler
-boilermakers
-boilers
-boiling
-boils
-boisterous
-boisterously
-bola
-bold
-bolder
-boldest
-boldface
-boldly
-boldness
-bole
-bolero
-boleyn
-bolivia
-bollard
-bollards
-bologna
-bolster
-bolstered
-bolstering
-bolsters
-bolt
-bolted
-bolting
-bolts
-bomb
-bombard
-bombarded
-bombardier
-bombarding
-bombardment
-bombardments
-bombards
-bombast
-bombastic
-bombasts
-bombay
-bombed
-bomber
-bombers
-bombing
-bombings
-bombs
-bombshell
-bonanza
-bonanzas
-bonbon
-bonbons
-bond
-bondage
-bonded
-bondholders
-bonding
-bondings
-bonds
-bone
-boned
-boneless
-bonemeal
-bones
-boney
-bonfire
-bonfires
-bong
-bongs
-bonier
-boniest
-bonn
-bonnet
-bonneted
-bonnets
-bonnie
-bonniest
-bonny
-bonobo
-bonsai
-bonus
-bonuses
-bony
-boo
-boobies
-booboo
-booby
-boobytrap
-boobytrapped
-boobytraps
-booed
-boohoo
-booing
-book
-bookable
-bookbinder
-bookbinders
-bookbinding
-bookcase
-bookcases
-booked
-bookends
-bookers
-bookie
-bookies
-booking
-bookings
-bookish
-bookkeeper
-bookkeeping
-booklet
-booklets
-bookmaker
-bookmakers
-bookmaking
-bookmark
-bookmarks
-books
-bookseller
-booksellers
-bookshelf
-bookshelves
-bookshop
-bookshops
-bookstall
-bookstalls
-bookwork
-bookworm
-bookworms
-boom
-boomed
-boomer
-boomerang
-boomeranging
-boomerangs
-booming
-booms
-boon
-boons
-boor
-boorish
-boorishly
-boorishness
-boors
-boos
-boost
-boosted
-booster
-boosters
-boosting
-boosts
-boot
-booted
-bootees
-booth
-booths
-booting
-bootlace
-bootlaces
-bootleg
-bootless
-bootprints
-boots
-bootstrap
-bootstraps
-booty
-booze
-boozed
-boozer
-boozers
-boozes
-bop
-bops
-boracic
-borate
-borates
-borax
-bordeaux
-border
-bordered
-borderer
-bordering
-borderline
-borders
-bore
-boreal
-bored
-boredom
-borehole
-boreholes
-borer
-borers
-bores
-boring
-boringly
-born
-bornagain
-borne
-borneo
-boron
-borough
-boroughs
-borrow
-borrowable
-borrowed
-borrower
-borrowers
-borrowing
-borrowings
-borrows
-borstal
-borstals
-bosnia
-bosom
-bosoms
-boson
-bosons
-boss
-bossed
-bosses
-bossier
-bossiest
-bossiness
-bossing
-bossy
-boston
-bosun
-botanic
-botanical
-botanically
-botanist
-botanists
-botany
-botch
-botched
-both
-bother
-bothered
-bothering
-bothers
-bothersome
-bothy
-botswana
-bottle
-bottled
-bottlefed
-bottlefeed
-bottleneck
-bottlenecks
-bottler
-bottles
-bottling
-bottom
-bottomed
-bottoming
-bottomless
-bottommost
-bottoms
-botulism
-boudoir
-boudoirs
-bouffant
-bougainvillea
-bough
-boughs
-bought
-boulder
-boulders
-boulevard
-boulevards
-bounce
-bounced
-bouncer
-bouncers
-bounces
-bouncier
-bounciest
-bouncing
-bouncy
-bound
-boundaries
-boundary
-bounded
-boundedness
-bounder
-bounders
-bounding
-boundless
-bounds
-bounteous
-bounties
-bountiful
-bountifully
-bounty
-bouquet
-bouquets
-bourbon
-bourbons
-bourgeois
-bourgeoisie
-bout
-boutique
-boutiques
-bouts
-bovine
-bow
-bowdlerisation
-bowdlerised
-bowdlerising
-bowed
-bowel
-bowels
-bower
-bowers
-bowie
-bowing
-bowl
-bowlder
-bowled
-bowler
-bowlers
-bowlines
-bowling
-bowls
-bowman
-bowmen
-bows
-bowsprit
-bowstring
-box
-boxed
-boxer
-boxers
-boxes
-boxful
-boxing
-boxoffice
-boxtops
-boxwood
-boxy
-boy
-boycott
-boycotted
-boycotting
-boycotts
-boyfriend
-boyfriends
-boyhood
-boyish
-boyishly
-boys
-boyscout
-bra
-brabble
-brabbled
-brabbles
-brace
-braced
-bracelet
-bracelets
-bracer
-braces
-brachiopods
-bracing
-bracingly
-bracken
-bracket
-bracketed
-bracketing
-brackets
-brackish
-bradawl
-bradycardia
-brag
-braggart
-braggarts
-bragged
-bragging
-brags
-brahman
-brahms
-braid
-braided
-braiding
-braids
-brail
-braille
-brain
-braincell
-braincells
-brainchild
-braindamaged
-braindead
-brainier
-brainless
-brainlessly
-brainlessness
-brainpower
-brains
-brainstorm
-brainstorming
-brainstorms
-brainteasers
-brainteasing
-brainwash
-brainwashed
-brainwashing
-brainwave
-brainwaves
-brainy
-braise
-braised
-brake
-brake
-braked
-brakes
-braking
-bramble
-brambles
-bran
-branch
-branched
-branches
-branching
-branchy
-brand
-branded
-brandies
-branding
-brandish
-brandished
-brandishes
-brandishing
-brands
-brandy
-brans
-bras
-brash
-brasher
-brashly
-brashness
-brasiers
-brasil
-brasilia
-brass
-brasserie
-brasses
-brassiere
-brassy
-brat
-brats
-bratty
-bravado
-brave
-braved
-bravely
-braver
-bravery
-braves
-bravest
-braving
-bravo
-braw
-brawl
-brawled
-brawler
-brawling
-brawls
-brawn
-brawnier
-brawniest
-brawny
-bray
-brayed
-braying
-brays
-braze
-brazen
-brazened
-brazenly
-brazenness
-brazier
-braziers
-brazil
-brazing
-breach
-breached
-breaches
-breaching
-bread
-breadandbutter
-breadboard
-breadboards
-breadcrumbs
-breaded
-breadfruit
-breadline
-breads
-breadth
-breadths
-breadwinner
-breadwinners
-break
-breakable
-breakage
-breakages
-breakaway
-breakaways
-breakdown
-breakdowns
-breaker
-breakers
-breakfast
-breakfasted
-breakfasting
-breakfasts
-breakin
-breaking
-breakins
-breakneck
-breakout
-breakpoint
-breakpoints
-breaks
-breakthrough
-breakthroughs
-breakup
-breakups
-breakwater
-breakwaters
-bream
-breast
-breastbone
-breasted
-breastfeed
-breastfeeding
-breasting
-breastplate
-breasts
-breaststroke
-breath
-breathable
-breathalysed
-breathalyser
-breathalysers
-breathe
-breathed
-breather
-breathes
-breathing
-breathings
-breathingspace
-breathless
-breathlessly
-breathlessness
-breaths
-breathtaking
-breathtakingly
-breathy
-breccias
-brecciated
-bred
-breech
-breeches
-breed
-breeder
-breeders
-breeding
-breeds
-breeze
-breezed
-breezes
-breezier
-breeziest
-breezily
-breezing
-breezy
-brethren
-breton
-breviary
-brevity
-brew
-brewage
-brewed
-brewer
-breweries
-brewers
-brewery
-brewing
-brews
-briar
-bribe
-bribed
-briber
-bribers
-bribery
-bribes
-bribing
-bricabrac
-brick
-brickbat
-brickbats
-bricked
-bricking
-bricklayer
-bricklayers
-bricklaying
-brickred
-bricks
-brickwork
-bridal
-bridals
-bride
-bridegroom
-bridegrooms
-brides
-bridesmaid
-bridesmaids
-bridge
-bridgebuilding
-bridged
-bridgehead
-bridges
-bridging
-bridle
-bridled
-bridles
-bridleway
-bridleways
-bridling
-brief
-briefcase
-briefcases
-briefed
-briefer
-briefest
-briefing
-briefings
-briefly
-briefs
-briers
-brig
-brigade
-brigades
-brigadier
-brigadiers
-brigand
-brigands
-bright
-brighten
-brightened
-brightening
-brightens
-brighter
-brightest
-brighteyed
-brightly
-brightness
-brightnesses
-brighton
-brilliance
-brilliancy
-brilliant
-brilliantly
-brim
-brimmed
-brimming
-brims
-brimstone
-brindled
-brine
-brines
-bring
-bringer
-bringing
-brings
-brink
-brinkmanship
-brinks
-briny
-brio
-brioche
-briquettes
-brisbane
-brisk
-brisker
-briskest
-briskly
-briskness
-bristle
-bristled
-bristles
-bristling
-bristly
-brit
-britain
-british
-britons
-brittle
-brittleness
-broach
-broached
-broaches
-broaching
-broad
-broadband
-broadcast
-broadcaster
-broadcasters
-broadcasting
-broadcasts
-broaden
-broadened
-broadening
-broadens
-broader
-broadest
-broadleaved
-broadloom
-broadly
-broadminded
-broadmindedness
-broadness
-broadsheet
-broadsheets
-broadside
-broadsides
-broadsword
-broadswords
-broadway
-brocade
-brocaded
-broccoli
-brochure
-brochures
-brogue
-brogues
-broil
-broiled
-broiler
-broiling
-broils
-broke
-broken
-brokenhearted
-brokenly
-broker
-brokerage
-brokered
-brokers
-broking
-bromide
-bromides
-bromine
-bronchi
-bronchial
-bronchitis
-bronco
-brontosaurus
-bronze
-bronzed
-bronzes
-brooch
-brooches
-brood
-brooded
-broodiness
-brooding
-broodingly
-broods
-broody
-brook
-brooklyn
-brooks
-broom
-brooms
-broomstick
-broomsticks
-broth
-brothel
-brothels
-brother
-brotherhood
-brotherinlaw
-brotherly
-brothers
-brothersinlaw
-broths
-brought
-brouhaha
-brow
-browbeat
-browbeaten
-browbeating
-brown
-browned
-browner
-brownest
-brownie
-brownies
-browning
-brownish
-brownness
-browns
-brows
-browse
-browsed
-browser
-browsers
-browses
-browsing
-bruise
-bruised
-bruiser
-bruisers
-bruises
-bruising
-brunch
-brunches
-brunei
-brunet
-brunets
-brunette
-brunettes
-brunt
-brunts
-brush
-brushed
-brushes
-brushing
-brushoff
-brushup
-brushwood
-brushwork
-brushy
-brusque
-brusquely
-brusqueness
-brussels
-brutal
-brutalisation
-brutalise
-brutalised
-brutalising
-brutalism
-brutalities
-brutality
-brutally
-brute
-brutes
-brutish
-brutishness
-brutus
-bub
-bubble
-bubbled
-bubblegum
-bubbles
-bubblier
-bubbliest
-bubbling
-bubbly
-bubonic
-buccaneer
-buccaneering
-buccaneers
-buck
-bucked
-bucket
-bucketful
-bucketfuls
-bucketing
-buckets
-bucking
-buckle
-buckled
-buckler
-bucklers
-buckles
-buckling
-buckminsterfullerene
-buckpassing
-bucks
-buckshot
-buckskin
-bucolic
-bud
-budapest
-budded
-buddhism
-buddhist
-buddies
-budding
-buddings
-buddy
-budge
-budged
-budgerigar
-budget
-budgetary
-budgeted
-budgeting
-budgets
-budgie
-budgies
-budging
-buds
-buff
-buffalo
-buffer
-buffered
-buffering
-buffers
-buffet
-buffeted
-buffeting
-buffetings
-buffets
-buffing
-buffoon
-buffoonery
-buffoons
-buffs
-bug
-bugbear
-bugbears
-bugeyed
-bugged
-bugger
-buggered
-buggering
-buggers
-buggery
-buggies
-bugging
-buggy
-bugle
-bugler
-buglers
-bugles
-bugs
-build
-builder
-builders
-building
-buildings
-builds
-buildup
-buildups
-built
-builtin
-builtup
-bulb
-bulbous
-bulbs
-bulgaria
-bulge
-bulged
-bulges
-bulging
-bulgy
-bulimia
-bulimic
-bulk
-bulkhead
-bulkheads
-bulkier
-bulkiest
-bulks
-bulky
-bull
-bulldog
-bulldogs
-bulldoze
-bulldozed
-bulldozer
-bulldozers
-bulldozing
-bullet
-bulletin
-bulletins
-bulletproof
-bullets
-bullfight
-bullfighting
-bullfinch
-bullfrog
-bullied
-bullies
-bullion
-bullish
-bullock
-bullocks
-bulls
-bully
-bullying
-bulrushes
-bulwark
-bulwarks
-bum
-bumble
-bumbled
-bumbler
-bumblers
-bumbles
-bumbling
-bump
-bumped
-bumper
-bumpers
-bumpier
-bumpiest
-bumping
-bumpkin
-bumpkins
-bumps
-bumptious
-bumpy
-bums
-bun
-bunch
-bunched
-bunches
-bunching
-bundle
-bundled
-bundles
-bundling
-bung
-bungalow
-bungalows
-bungee
-bungle
-bungled
-bungler
-bunglers
-bungles
-bungling
-bunion
-bunions
-bunk
-bunked
-bunker
-bunkered
-bunkers
-bunks
-bunkum
-bunnies
-bunny
-buns
-bunting
-bunyan
-buoy
-buoyancy
-buoyant
-buoyantly
-buoyed
-buoys
-bur
-burble
-burbled
-burbles
-burbling
-burden
-burdened
-burdening
-burdens
-burdensome
-burdock
-bureau
-bureaucracies
-bureaucracy
-bureaucrat
-bureaucratic
-bureaucratically
-bureaucratisation
-bureaucrats
-bureaus
-bureaux
-burette
-burg
-burgeon
-burgeoned
-burgeoning
-burgeons
-burger
-burgers
-burghers
-burglar
-burglaries
-burglars
-burglary
-burgle
-burgled
-burgles
-burgling
-burgundy
-burial
-burials
-buried
-buries
-burlesque
-burlesquing
-burlier
-burliest
-burly
-burma
-burmese
-burn
-burned
-burner
-burners
-burning
-burnings
-burnished
-burnishing
-burns
-burnt
-burp
-burped
-burping
-burps
-burr
-burrow
-burrowed
-burrowing
-burrows
-burs
-bursar
-bursaries
-bursars
-bursary
-burst
-bursted
-bursting
-bursts
-burundi
-bury
-burying
-bus
-buses
-bush
-bushel
-bushels
-bushes
-bushfire
-bushier
-bushiest
-bushiness
-bushing
-bushland
-bushman
-bushmen
-bushy
-busied
-busier
-busies
-busiest
-busily
-business
-businesses
-businesslike
-businessman
-businessmen
-businesswoman
-busk
-busker
-buskers
-busking
-busman
-busmen
-bussed
-bussing
-bust
-bustard
-bustards
-busted
-busters
-bustier
-busting
-bustle
-bustled
-bustles
-bustling
-busts
-busty
-busy
-busybodies
-busybody
-busying
-but
-butane
-butcher
-butchered
-butchering
-butchers
-butchery
-butler
-butlers
-buts
-butt
-butted
-butter
-buttercup
-buttercups
-buttered
-butterfat
-butterflies
-butterfly
-buttering
-buttermilk
-butters
-butterscotch
-buttery
-butting
-buttock
-buttocks
-button
-buttoned
-buttonhole
-buttonholed
-buttonholes
-buttoning
-buttons
-buttress
-buttressed
-buttresses
-buttressing
-butts
-buxom
-buy
-buyer
-buyers
-buying
-buyout
-buys
-buzz
-buzzard
-buzzards
-buzzed
-buzzer
-buzzers
-buzzes
-buzzing
-buzzwords
-by
-bye
-byebye
-byelaw
-byelaws
-byelection
-byelections
-byes
-bygone
-bygones
-bylaw
-bylaws
-byline
-bypass
-bypassed
-bypasses
-bypassing
-bypath
-bypaths
-byproduct
-byproducts
-bystander
-bystanders
-byte
-bytes
-byway
-byways
-byword
-cab
-cabal
-cabals
-cabaret
-cabarets
-cabbage
-cabbages
-cabby
-cabin
-cabinet
-cabinetmaker
-cabinets
-cabins
-cable
-cabled
-cables
-cableway
-cabling
-cabman
-cabmen
-caboodle
-caboose
-cabriolet
-cabs
-cacao
-cache
-cached
-caches
-cachet
-caching
-cackle
-cackled
-cackles
-cackling
-cacophonous
-cacophony
-cacti
-cactus
-cactuses
-cad
-cadaver
-cadaverous
-cadavers
-caddie
-caddied
-caddies
-caddy
-caddying
-cade
-cadence
-cadences
-cadenza
-cadenzas
-cadet
-cadets
-cadge
-cadged
-cadger
-cadges
-cadmium
-cads
-caesar
-cafe
-cafes
-cafeteria
-cafeterias
-caftan
-caftans
-cage
-caged
-cages
-cagey
-cagiest
-caging
-cagoule
-cagoules
-cagy
-cahoots
-caiman
-caimans
-cain
-cairn
-cairns
-cairo
-cajole
-cajoled
-cajoling
-cake
-caked
-cakes
-caking
-calamities
-calamitous
-calamitously
-calamity
-calcareous
-calcification
-calcified
-calcify
-calcite
-calcium
-calculable
-calculate
-calculated
-calculatedly
-calculates
-calculating
-calculation
-calculations
-calculative
-calculator
-calculators
-calculus
-calcutta
-caldera
-caldron
-caldrons
-calendar
-calendars
-calf
-calibrate
-calibrated
-calibrates
-calibrating
-calibration
-calibrations
-calibrator
-calibrators
-calibre
-calico
-calif
-california
-caliper
-calipers
-caliph
-call
-callable
-called
-caller
-callers
-callgirl
-callgirls
-calligrapher
-calligraphic
-calligraphy
-calling
-callings
-calliper
-callipers
-callisthenics
-callous
-calloused
-callously
-callousness
-callow
-callowness
-calls
-callup
-callus
-calm
-calmed
-calmer
-calmest
-calming
-calmly
-calmness
-calms
-calorie
-calories
-calorific
-calorimeter
-calorimeters
-calorimetry
-calory
-calumniate
-calumnies
-calumny
-calvary
-calve
-calves
-calvin
-calving
-calypso
-cam
-camaraderie
-camber
-cambodia
-camcorder
-camcorders
-came
-camel
-camelhair
-camelot
-camels
-cameo
-camera
-cameraman
-cameramen
-cameras
-camerawork
-camisole
-camomile
-camouflage
-camouflaged
-camouflages
-camouflaging
-camp
-campaign
-campaigned
-campaigner
-campaigners
-campaigning
-campaigns
-campanile
-campanological
-campanologist
-campanology
-camped
-camper
-campers
-campfire
-campfires
-camphor
-camping
-camps
-campsite
-campsites
-campus
-campuses
-cams
-camshaft
-can
-canaan
-canada
-canadian
-canal
-canalisation
-canals
-canape
-canapes
-canard
-canaries
-canary
-canberra
-cancan
-cancel
-cancellation
-cancellations
-cancelled
-cancelling
-cancels
-cancer
-cancerous
-cancers
-candelabra
-candelas
-candid
-candidacy
-candidate
-candidates
-candidature
-candidatures
-candidly
-candies
-candle
-candlelight
-candlelit
-candlepower
-candles
-candlestick
-candlesticks
-candour
-candy
-cane
-caned
-canes
-canine
-canines
-caning
-canings
-canister
-canisters
-cannabis
-canned
-cannel
-cannery
-cannes
-cannibal
-cannibalise
-cannibalised
-cannibalising
-cannibalism
-cannibalistic
-cannibals
-cannily
-canning
-cannon
-cannonball
-cannonballs
-cannoned
-cannoning
-cannons
-cannot
-cannula
-canny
-canoe
-canoed
-canoeing
-canoeist
-canoeists
-canoes
-canon
-canonic
-canonical
-canonically
-canonisation
-canonise
-canonised
-canonry
-canons
-canopener
-canopied
-canopies
-canopy
-cans
-cant
-cantaloupe
-cantankerous
-cantata
-cantatas
-canted
-canteen
-canteens
-canter
-cantered
-cantering
-canters
-canticle
-canticles
-cantilever
-cantilevered
-canton
-cantons
-cantor
-canvas
-canvased
-canvases
-canvass
-canvassed
-canvasser
-canvassers
-canvasses
-canvassing
-canyon
-canyons
-cap
-capabilities
-capability
-capable
-capably
-capacious
-capacitance
-capacities
-capacitive
-capacitor
-capacitors
-capacity
-caparisoned
-cape
-caped
-caper
-capered
-capering
-capers
-capes
-capetown
-capillaries
-capillary
-capita
-capital
-capitalisation
-capitalise
-capitalised
-capitalises
-capitalising
-capitalism
-capitalist
-capitalistic
-capitalists
-capitally
-capitals
-capitate
-capitation
-capitol
-capitulate
-capitulated
-capitulates
-capitulating
-capitulation
-capped
-capping
-cappuccino
-capri
-caprice
-caprices
-capricious
-capriciously
-capriciousness
-capriole
-capris
-caps
-capsize
-capsized
-capsizes
-capsizing
-capstan
-capstans
-capsule
-capsules
-captain
-captaincy
-captained
-captaining
-captains
-caption
-captioned
-captions
-captious
-captivate
-captivated
-captivating
-captivation
-captive
-captives
-captivity
-captor
-captors
-capture
-captured
-captures
-capturing
-capybara
-car
-carabinieri
-caracal
-caracals
-carafe
-caramel
-caramelised
-caramels
-carapace
-carat
-carats
-caravan
-caravanning
-caravans
-caravel
-caraway
-carbide
-carbine
-carbines
-carbohydrate
-carbohydrates
-carbolic
-carbon
-carbonaceous
-carbonate
-carbonated
-carbonates
-carbonic
-carboniferous
-carbonise
-carbons
-carbonyl
-carborundum
-carboxyl
-carbuncle
-carbuncles
-carburettor
-carburettors
-carcase
-carcases
-carcass
-carcasses
-carcinogen
-carcinogenesis
-carcinogenic
-carcinogens
-carcinoma
-carcinomas
-card
-cardboard
-carded
-cardholders
-cardiac
-cardiff
-cardigan
-cardigans
-cardinal
-cardinality
-cardinals
-carding
-cardioid
-cardiologist
-cardiology
-cardiopulmonary
-cardiovascular
-cards
-care
-cared
-career
-careered
-careering
-careerism
-careerist
-careerists
-careers
-carefree
-careful
-carefully
-carefulness
-careless
-carelessly
-carelessness
-carer
-carers
-cares
-caress
-caressed
-caresses
-caressing
-caressingly
-caretaker
-caretakers
-carets
-careworn
-cargo
-caribou
-caricature
-caricatured
-caricatures
-caricaturisation
-caries
-caring
-carmine
-carnage
-carnages
-carnal
-carnality
-carnally
-carnation
-carnations
-carnival
-carnivals
-carnivore
-carnivores
-carnivorous
-carnivorousness
-carol
-carols
-carotene
-carotid
-carotin
-carouse
-carousel
-carousing
-carp
-carpal
-carpenter
-carpenters
-carpentry
-carpet
-carpeted
-carpeting
-carpets
-carping
-carport
-carports
-carps
-carrel
-carriage
-carriages
-carriageway
-carriageways
-carried
-carrier
-carriers
-carries
-carrion
-carrot
-carrots
-carroty
-carry
-carrycot
-carrying
-cars
-carsick
-cart
-carted
-cartel
-cartels
-carter
-carthorses
-cartilage
-carting
-cartload
-cartloads
-cartographer
-cartographers
-cartographic
-cartography
-carton
-cartons
-cartoon
-cartoonist
-cartoonists
-cartoons
-cartouche
-cartridge
-cartridges
-carts
-cartwheel
-cartwheels
-carve
-carved
-carver
-carvers
-carvery
-carves
-carving
-carvings
-caryatids
-casanova
-cascade
-cascaded
-cascades
-cascading
-cascara
-case
-casebook
-cased
-caseload
-caseloads
-casement
-casements
-cases
-casework
-cash
-cashbox
-cashed
-cashes
-cashew
-cashier
-cashiers
-cashing
-cashless
-cashmere
-casing
-casings
-casino
-cask
-casket
-caskets
-casks
-cassava
-casserole
-casseroles
-cassette
-cassettes
-cassock
-cassocks
-cassowary
-cast
-castanet
-castanets
-castaway
-castaways
-caste
-castellated
-caster
-casters
-castes
-castigate
-castigated
-castigates
-castigating
-casting
-castings
-castiron
-castle
-castled
-castles
-castling
-castoff
-castoffs
-castor
-castors
-castrate
-castrated
-castrating
-castration
-castrato
-casts
-casual
-casually
-casualness
-casuals
-casualties
-casualty
-casuistry
-cat
-cataclysm
-cataclysmic
-catacomb
-catacombs
-catalepsy
-catalogue
-catalogued
-cataloguer
-cataloguers
-catalogues
-cataloguing
-catalyse
-catalysed
-catalyses
-catalysing
-catalysis
-catalyst
-catalysts
-catalytic
-catamaran
-catamarans
-catanddog
-catapult
-catapulted
-catapulting
-catapults
-cataract
-cataracts
-catarrh
-catastrophe
-catastrophes
-catastrophic
-catastrophically
-catatonic
-catcalls
-catch
-catched
-catcher
-catchers
-catches
-catchier
-catchiest
-catching
-catchment
-catchphrase
-catchphrases
-catchword
-catchwords
-catchy
-catechism
-catechisms
-catechist
-catechists
-categorical
-categorically
-categories
-categorisation
-categorisations
-categorise
-categorised
-categorises
-categorising
-category
-cater
-catered
-caterer
-caterers
-catering
-caterpillar
-caterpillars
-caters
-caterwaul
-caterwauls
-catfish
-catgut
-catguts
-catharsis
-cathartic
-cathedral
-cathedrals
-catheter
-catheterisation
-catheters
-cathode
-cathodes
-catholic
-cation
-cationic
-cations
-catlike
-catnap
-catnip
-cats
-catsuit
-cattery
-cattle
-catwalk
-catwalks
-caucus
-caucuses
-caudal
-caught
-cauldron
-cauldrons
-cauliflower
-cauliflowers
-caulking
-causal
-causality
-causally
-causation
-causative
-cause
-caused
-causes
-causeway
-causeways
-causing
-caustic
-caustically
-caustics
-cauterise
-cauterising
-caution
-cautionary
-cautioned
-cautioning
-cautions
-cautious
-cautiously
-cautiousness
-cavalcade
-cavalier
-cavalierly
-cavaliers
-cavalry
-cavalryman
-cavalrymen
-cave
-caveat
-caveats
-caved
-cavein
-caveman
-cavemen
-caver
-cavern
-cavernous
-caverns
-cavers
-caves
-caviar
-caviare
-caviars
-caving
-cavitation
-cavities
-cavity
-cavort
-cavorted
-cavorting
-cavorts
-caw
-cawing
-cayman
-caymans
-cease
-ceased
-ceasefire
-ceasefires
-ceaseless
-ceaselessly
-ceases
-ceasing
-cedar
-cedars
-cedarwood
-cede
-ceded
-cedilla
-ceding
-ceilidh
-ceilidhs
-ceiling
-ceilings
-celandine
-celeb
-celebrant
-celebrants
-celebrate
-celebrated
-celebrates
-celebrating
-celebration
-celebrations
-celebratory
-celebrities
-celebrity
-celeriac
-celery
-celestial
-celestially
-celibacy
-celibate
-cell
-cellar
-cellars
-cellist
-cellists
-cello
-cellophane
-cells
-cellular
-cellulite
-celluloid
-cellulose
-celsius
-celtic
-cement
-cemented
-cementing
-cements
-cemeteries
-cemetery
-cenotaph
-censer
-censor
-censored
-censorial
-censoring
-censorious
-censoriousness
-censors
-censorship
-censure
-censured
-censures
-censuring
-census
-censuses
-cent
-centaur
-centaurs
-centenarians
-centenary
-centennial
-centigrade
-centime
-centimes
-centimetre
-centimetres
-centipede
-centipedes
-central
-centralisation
-centralise
-centralised
-centraliser
-centralisers
-centralises
-centralising
-centralism
-centralist
-centrality
-centrally
-centre
-centred
-centrefold
-centrefolds
-centreing
-centrepiece
-centrepieces
-centres
-centric
-centrifugal
-centrifugally
-centrifugation
-centrifuge
-centrifuged
-centrifuges
-centrifuging
-centring
-centripetal
-centrist
-centrists
-centroid
-centroids
-cents
-centuries
-centurion
-centurions
-century
-cephalopods
-ceramic
-ceramics
-ceramist
-cereal
-cereals
-cerebellum
-cerebral
-cerebrum
-ceremonial
-ceremonially
-ceremonials
-ceremonies
-ceremonious
-ceremoniously
-ceremony
-ceres
-cerise
-certain
-certainly
-certainties
-certainty
-certifiable
-certifiably
-certificate
-certificated
-certificates
-certification
-certified
-certifies
-certify
-certifying
-certitude
-certitudes
-cervical
-cervix
-cess
-cessation
-cessations
-cession
-cesspit
-cesspool
-cesspools
-cetacean
-ceylon
-chacha
-chad
-chafe
-chafed
-chafes
-chaff
-chaffed
-chaffinch
-chaffinches
-chaffing
-chafing
-chagrin
-chagrined
-chain
-chained
-chaining
-chains
-chainsaw
-chainsaws
-chainsmoke
-chainsmoked
-chainsmoking
-chair
-chaired
-chairing
-chairlift
-chairman
-chairmanship
-chairmanships
-chairmen
-chairperson
-chairpersons
-chairs
-chairwoman
-chairwomen
-chaldronxxxxxxxxxxxxxx
-chalet
-chalets
-chalice
-chalices
-chalk
-chalked
-chalking
-chalks
-chalky
-challenge
-challenged
-challenger
-challengers
-challenges
-challenging
-challengingly
-chamber
-chambered
-chamberlain
-chamberlains
-chambermaid
-chambermaids
-chamberpot
-chamberpots
-chambers
-chameleon
-chameleons
-chamfer
-chamfered
-chamois
-chamomile
-champ
-champagne
-champagnes
-champing
-champion
-championed
-championing
-champions
-championship
-championships
-champs
-chance
-chanced
-chancel
-chancellery
-chancellor
-chancellors
-chancellorship
-chancer
-chancery
-chances
-chancier
-chanciest
-chancing
-chancy
-chandelier
-chandeliers
-chandler
-change
-changeability
-changeable
-changed
-changeless
-changeling
-changeover
-changeovers
-changer
-changers
-changes
-changing
-channel
-channelled
-channelling
-channels
-chant
-chanted
-chanter
-chanteuse
-chanting
-chantings
-chantries
-chantry
-chants
-chaos
-chaotic
-chaotically
-chap
-chapel
-chapels
-chaperon
-chaperone
-chaperoned
-chaperones
-chaplain
-chaplaincy
-chaplains
-chaplainxxxxxxxx
-chapman
-chapped
-chapping
-chaps
-chapter
-chapters
-char
-charabanc
-character
-characterful
-characterisation
-characterisations
-characterise
-characterised
-characterises
-characterising
-characteristic
-characteristically
-characteristics
-characterless
-characters
-charade
-charades
-charcoal
-charcuterie
-chared
-charge
-chargeable
-charged
-charger
-chargers
-charges
-charging
-chariot
-charioteer
-charioteers
-chariots
-charisma
-charismas
-charismatic
-charismatically
-charismatics
-charitable
-charitably
-charities
-charity
-charlady
-charlatan
-charlatans
-charles
-charlie
-charm
-charmed
-charmer
-charmers
-charming
-charmingly
-charmless
-charms
-charon
-charred
-charring
-chars
-chart
-charted
-charter
-chartered
-chartering
-charters
-charting
-chartists
-charts
-charwoman
-chary
-chase
-chased
-chaser
-chasers
-chases
-chasing
-chasm
-chasms
-chassis
-chaste
-chastely
-chastened
-chastening
-chastise
-chastised
-chastisement
-chastises
-chastising
-chastity
-chat
-chateau
-chats
-chatted
-chattel
-chattels
-chatter
-chatterbox
-chattered
-chatterer
-chattering
-chatters
-chattily
-chatting
-chatty
-chauffeur
-chauffeured
-chauffeurs
-chauvinism
-chauvinist
-chauvinistic
-chauvinists
-cheap
-cheapen
-cheapened
-cheapening
-cheapens
-cheaper
-cheapest
-cheapish
-cheaply
-cheapness
-cheapskates
-cheat
-cheated
-cheater
-cheaters
-cheating
-cheats
-check
-checked
-checker
-checkered
-checkering
-checkers
-checkin
-checking
-checklist
-checklists
-checkmate
-checkout
-checkouts
-checkpoint
-checkpoints
-checks
-checkup
-checkups
-cheddar
-cheek
-cheekbone
-cheekbones
-cheeked
-cheekier
-cheekiest
-cheekily
-cheeking
-cheeks
-cheeky
-cheep
-cheeping
-cheer
-cheered
-cheerful
-cheerfully
-cheerfulness
-cheerier
-cheeriest
-cheerily
-cheering
-cheerio
-cheerleader
-cheerleaders
-cheerless
-cheerlessness
-cheers
-cheery
-cheese
-cheeseboard
-cheeseburger
-cheeseburgers
-cheesecake
-cheesecloth
-cheesemaking
-cheeses
-cheesy
-cheetah
-cheetahs
-chef
-chefs
-chekov
-chemic
-chemical
-chemically
-chemicals
-chemiluminescence
-chemiluminescent
-chemise
-chemist
-chemistry
-chemists
-chemosynthesis
-chemotherapeutic
-chemotherapy
-cheque
-chequebook
-chequebooks
-chequer
-chequerboard
-chequered
-chequering
-chequers
-cheques
-cherish
-cherished
-cherishes
-cherishing
-cheroot
-cheroots
-cherries
-cherry
-cherryred
-cherub
-cherubic
-cherubim
-cherubs
-chess
-chessboard
-chessboards
-chessmen
-chest
-chested
-chester
-chesterfield
-chestnut
-chestnuts
-chests
-chesty
-chevalier
-chevron
-chevrons
-chew
-chewable
-chewed
-chewer
-chewier
-chewiest
-chewing
-chews
-chewy
-chic
-chicago
-chicane
-chicanery
-chick
-chicken
-chickens
-chicks
-chicory
-chide
-chided
-chides
-chiding
-chief
-chiefly
-chiefs
-chieftain
-chieftains
-chiffon
-chihuahua
-chihuahuas
-chilblain
-chilblains
-child
-childbearing
-childbirth
-childcare
-childhood
-childhoods
-childish
-childishly
-childishness
-childless
-childlessness
-childlike
-childly
-childminders
-childproof
-children
-chilean
-chili
-chill
-chilled
-chiller
-chillers
-chilli
-chillier
-chillies
-chilliest
-chilliness
-chilling
-chillingly
-chills
-chilly
-chimaera
-chimaerical
-chime
-chimed
-chimera
-chimeras
-chimerical
-chimes
-chiming
-chimney
-chimneys
-chimp
-chimpanzee
-chimpanzees
-chimps
-chin
-china
-chinese
-chink
-chinked
-chinking
-chinks
-chinless
-chinoiserie
-chins
-chintz
-chintzy
-chip
-chipboard
-chipmunk
-chipped
-chipping
-chippings
-chips
-chiral
-chiropodist
-chiropody
-chiropractic
-chiropractor
-chiropractors
-chirp
-chirped
-chirping
-chirps
-chirpy
-chirruped
-chisel
-chiseled
-chiselled
-chiselling
-chisels
-chit
-chits
-chivalric
-chivalrous
-chivalrously
-chivalry
-chives
-chivvied
-chivvy
-chivvying
-chlamydia
-chlorate
-chloride
-chlorinated
-chlorination
-chlorine
-chlorofluorocarbon
-chlorofluorocarbons
-chloroform
-chloroformed
-chloroforming
-chlorophyll
-chloroquine
-chock
-chockablock
-chockfull
-chocks
-chocolate
-chocolates
-choice
-choices
-choicest
-choir
-choirboy
-choirboys
-choirmaster
-choirs
-choke
-choked
-choker
-chokes
-choking
-cholera
-cholesterol
-choline
-chomp
-chomped
-chomping
-chomps
-choose
-chooser
-choosers
-chooses
-choosey
-choosier
-choosing
-choosy
-chop
-chopin
-chopped
-chopper
-choppers
-choppier
-choppiest
-chopping
-choppy
-chops
-chopsticks
-choral
-chorale
-chorales
-chorals
-chord
-chordal
-chords
-chore
-chorea
-choreographed
-choreographer
-choreographers
-choreographic
-choreographing
-choreography
-chores
-chorister
-choristers
-chortle
-chortled
-chortles
-chortling
-chorus
-chorused
-choruses
-chose
-chosen
-choughs
-chow
-christ
-christen
-christened
-christening
-christenings
-christian
-chroma
-chromatic
-chromaticism
-chromatograph
-chromatographic
-chromatography
-chrome
-chromed
-chromite
-chromium
-chromosomal
-chromosome
-chromosomes
-chronic
-chronically
-chronicle
-chronicled
-chronicler
-chroniclers
-chronicles
-chronicling
-chronograph
-chronological
-chronologically
-chronologies
-chronology
-chronometer
-chronometric
-chrysalis
-chrysanthemum
-chrysanthemums
-chubbiness
-chubby
-chuck
-chucked
-chucking
-chuckle
-chuckled
-chuckles
-chuckling
-chucks
-chuff
-chuffed
-chug
-chugged
-chugging
-chugs
-chum
-chump
-chums
-chunk
-chunkier
-chunks
-chunky
-chunnel
-chuntering
-church
-churches
-churchgoer
-churchgoers
-churchman
-churchmen
-churchwarden
-churchwardens
-churchyard
-churchyards
-churlish
-churlishly
-churlishness
-churn
-churned
-churning
-churns
-chute
-chutes
-chutney
-chutzpah
-cicada
-cicadas
-cicero
-cider
-ciders
-cigar
-cigaret
-cigarette
-cigarettes
-cigars
-cilia
-cilium
-cinch
-cinder
-cinders
-cine
-cinema
-cinemas
-cinematic
-cinematographer
-cinematography
-cinnamon
-cipher
-ciphered
-ciphers
-circa
-circadian
-circle
-circled
-circles
-circlet
-circlets
-circling
-circuit
-circuitous
-circuitry
-circuits
-circulant
-circular
-circularise
-circularised
-circularity
-circularly
-circulars
-circulate
-circulated
-circulates
-circulating
-circulation
-circulations
-circulatory
-circumcise
-circumcised
-circumcision
-circumference
-circumferences
-circumferential
-circumflex
-circumflexes
-circumlocution
-circumlocutions
-circumlocutory
-circumnavigate
-circumnavigated
-circumnavigates
-circumnavigation
-circumnavigational
-circumscribe
-circumscribed
-circumscribing
-circumspect
-circumspection
-circumspectly
-circumstance
-circumstances
-circumstantial
-circumstantially
-circumvent
-circumventable
-circumvented
-circumventing
-circumvention
-circumventions
-circumvents
-circus
-circuses
-cirrhosis
-cirrhotic
-cirrus
-cist
-cistern
-cisterns
-citadel
-citadels
-citation
-citations
-cite
-cited
-cites
-cithers
-cities
-citing
-citizen
-citizenry
-citizens
-citizenship
-citrate
-citrates
-citric
-citron
-citrons
-citrus
-citruses
-cittern
-city
-cityscape
-civic
-civics
-civies
-civil
-civilian
-civilians
-civilisation
-civilisations
-civilise
-civilised
-civilising
-civilities
-civility
-civilly
-clacking
-clad
-cladding
-claim
-claimable
-claimant
-claimants
-claimed
-claiming
-claims
-clairvoyance
-clairvoyant
-clairvoyants
-clam
-clamber
-clambered
-clambering
-clambers
-clammed
-clamming
-clammy
-clamorous
-clamorously
-clamour
-clamoured
-clamouring
-clamours
-clamp
-clampdown
-clamped
-clamping
-clamps
-clams
-clan
-clandestine
-clandestinely
-clang
-clanged
-clangers
-clanging
-clank
-clanked
-clanking
-clannish
-clans
-clansmen
-clap
-clapped
-clapper
-clappers
-clapping
-claps
-claptrap
-claret
-clarets
-clarification
-clarifications
-clarified
-clarifies
-clarify
-clarifying
-clarinet
-clarinets
-clarinettist
-clarion
-clarity
-clash
-clashed
-clashes
-clashing
-clasp
-clasped
-clasper
-clasping
-clasps
-class
-classed
-classes
-classic
-classical
-classically
-classicism
-classicist
-classicists
-classics
-classier
-classiest
-classifiable
-classification
-classifications
-classificatory
-classified
-classifier
-classifiers
-classifies
-classify
-classifying
-classing
-classless
-classlessness
-classmate
-classmates
-classroom
-classrooms
-classy
-clatter
-clattered
-clattering
-clatters
-clausal
-clause
-clauses
-claustrophobia
-claustrophobic
-clavichord
-clavicle
-claw
-clawed
-clawing
-claws
-clay
-clayey
-claymore
-claymores
-clays
-clean
-cleancut
-cleaned
-cleaner
-cleaners
-cleanest
-cleaning
-cleanliness
-cleanliving
-cleanly
-cleanness
-cleans
-cleanse
-cleansed
-cleanser
-cleanses
-cleanshaven
-cleansing
-cleanup
-clear
-clearance
-clearances
-clearcut
-cleared
-clearer
-clearest
-clearheaded
-clearing
-clearings
-clearly
-clearness
-clears
-clearsighted
-clearup
-clearups
-clearway
-cleat
-cleavage
-cleavages
-cleave
-cleaved
-cleaver
-cleavers
-cleaves
-cleaving
-clef
-cleft
-clefts
-cleg
-clematis
-clemency
-clement
-clench
-clenched
-clenches
-clenching
-clergies
-clergy
-clergyman
-clergymen
-cleric
-clerical
-clerically
-clerics
-clerk
-clerks
-clever
-cleverer
-cleverest
-cleverly
-cleverness
-cliche
-cliches
-click
-clicked
-clicking
-clicks
-client
-clientele
-clients
-cliff
-cliffhanger
-cliffs
-climactic
-climate
-climates
-climatic
-climatically
-climatological
-climatologists
-climatology
-climax
-climaxed
-climaxes
-climaxing
-climb
-climbable
-climbdown
-climbed
-climber
-climbers
-climbing
-climbs
-climes
-clinch
-clinched
-clinches
-clinching
-cling
-clingers
-clinging
-clings
-clinic
-clinical
-clinically
-clinician
-clinicians
-clinics
-clink
-clinked
-clinker
-clinking
-clip
-clipboard
-clipboards
-clipped
-clipper
-clippers
-clipping
-clippings
-clips
-clique
-cliques
-cliquey
-clitoral
-clitoris
-cloaca
-cloak
-cloakanddagger
-cloaked
-cloaking
-cloakroom
-cloakrooms
-cloaks
-clobber
-clock
-clocked
-clocking
-clockmaker
-clocks
-clockwise
-clockwork
-clod
-clods
-clog
-clogged
-clogging
-clogs
-cloister
-cloistered
-cloisters
-clonal
-clone
-cloned
-clones
-cloning
-closable
-close
-closed
-closedcircuit
-closeknit
-closely
-closeness
-closer
-closers
-closes
-closest
-closet
-closeted
-closets
-closeup
-closeups
-closing
-closings
-closure
-closures
-clot
-cloth
-clothe
-clothed
-clothes
-clothespeg
-clothespegs
-clothier
-clothiers
-clothing
-cloths
-clots
-clotted
-clotting
-cloud
-cloudburst
-cloudbursts
-clouded
-cloudier
-cloudiest
-cloudiness
-clouding
-cloudless
-clouds
-cloudscape
-cloudscapes
-cloudy
-clout
-clouted
-clouts
-clove
-cloven
-clover
-cloves
-clown
-clowned
-clowning
-clownish
-clowns
-cloying
-cloyingly
-club
-clubbed
-clubbing
-clubfooted
-clubhouse
-clubman
-clubroom
-clubs
-cluck
-clucked
-clucking
-clucks
-clue
-clued
-cluedup
-clueless
-clues
-clumber
-clump
-clumped
-clumping
-clumps
-clumpy
-clumsier
-clumsiest
-clumsily
-clumsiness
-clumsy
-clung
-cluster
-clustered
-clustering
-clusters
-clutch
-clutched
-clutches
-clutching
-clutter
-cluttered
-cluttering
-clutters
-coach
-coached
-coaches
-coaching
-coachload
-coachloads
-coachman
-coachmen
-coachwork
-coacted
-coaction
-coacts
-coagulate
-coagulated
-coagulation
-coal
-coalblack
-coalesce
-coalesced
-coalescence
-coalesces
-coalescing
-coalface
-coalfield
-coalfields
-coalition
-coalitions
-coalminers
-coals
-coapts
-coarse
-coarsely
-coarseness
-coarsens
-coarser
-coarsest
-coast
-coastal
-coasted
-coaster
-coasters
-coastguard
-coastguards
-coasting
-coastlands
-coastline
-coastlines
-coasts
-coat
-coated
-coathanger
-coating
-coatings
-coats
-coauthor
-coauthored
-coauthoring
-coauthors
-coax
-coaxed
-coaxes
-coaxial
-coaxing
-coaxingly
-cob
-cobalt
-cobble
-cobbled
-cobbler
-cobblers
-cobbles
-cobblestones
-cobbling
-coble
-cobra
-cobras
-cobs
-cobweb
-cobwebbed
-cobwebby
-cobwebs
-coca
-cocain
-cocaine
-cochlea
-cochlear
-cock
-cockatoo
-cockatoos
-cockatrice
-cockatrices
-cockcrow
-cocked
-cockerel
-cockerels
-cockeyed
-cockier
-cockiest
-cockiness
-cocking
-cockle
-cockles
-cockney
-cockneys
-cockpit
-cockpits
-cockroach
-cockroaches
-cocks
-cockshies
-cocksure
-cocktail
-cocktails
-cocky
-cocoa
-coconut
-coconuts
-cocoon
-cocooned
-cocoons
-cod
-coda
-coddle
-coddling
-code
-codebreaker
-coded
-codeine
-codename
-codenamed
-coder
-coders
-codes
-codeword
-codewords
-codex
-codfish
-codices
-codicil
-codicils
-codification
-codifications
-codified
-codifies
-codify
-codifying
-coding
-codling
-codpiece
-cods
-coefficient
-coefficients
-coelenterates
-coerce
-coerced
-coercer
-coerces
-coercible
-coercing
-coercion
-coercions
-coercive
-coercively
-coeval
-coexist
-coexisted
-coexistence
-coexistent
-coexisting
-coexists
-coextensive
-coffee
-coffees
-coffer
-cofferdam
-cofferdams
-coffers
-coffin
-coffins
-cog
-cogency
-cogent
-cogently
-cogitate
-cogitated
-cogitating
-cogitation
-cogitations
-cogitative
-cognac
-cognacs
-cognate
-cognates
-cognisance
-cognisant
-cognition
-cognitive
-cognitively
-cognizance
-cognizant
-cognoscenti
-cogs
-cohabit
-cohabitation
-cohabitees
-cohabiting
-cohere
-cohered
-coherence
-coherency
-coherent
-coherently
-coheres
-cohesion
-cohesive
-cohesively
-cohesiveness
-cohort
-cohorts
-coiffure
-coil
-coiled
-coiling
-coils
-coin
-coinage
-coinages
-coincide
-coincided
-coincidence
-coincidences
-coincident
-coincidental
-coincidentally
-coincides
-coinciding
-coined
-coiner
-coiners
-coining
-coins
-coital
-coitus
-coke
-col
-cola
-colander
-colas
-cold
-coldblooded
-coldbloodedly
-colder
-coldest
-coldhearted
-coldish
-coldly
-coldness
-colds
-coldwar
-cole
-coleslaw
-colitis
-collaborate
-collaborated
-collaborates
-collaborating
-collaboration
-collaborationist
-collaborations
-collaborative
-collaboratively
-collaborator
-collaborators
-collage
-collagen
-collages
-collapse
-collapsed
-collapses
-collapsible
-collapsing
-collar
-collarbone
-collared
-collaring
-collarless
-collars
-collate
-collated
-collateral
-collaterally
-collates
-collating
-collation
-colleague
-colleagues
-collect
-collectability
-collectable
-collectables
-collected
-collecting
-collection
-collections
-collective
-collectively
-collectives
-collectivisation
-collectivism
-collectivist
-collectivity
-collector
-collectors
-collects
-college
-colleges
-collegial
-collegiate
-collide
-collided
-collides
-colliding
-collie
-collier
-collieries
-colliers
-colliery
-collies
-collimation
-collimator
-collinear
-collins
-collision
-collisional
-collisions
-collocated
-collocation
-collocational
-collocations
-colloid
-colloidal
-colloids
-colloquia
-colloquial
-colloquialism
-colloquialisms
-colloquially
-colloquium
-collude
-colluded
-colluding
-collusion
-colobus
-cologne
-colon
-colonel
-colonels
-colonial
-colonialism
-colonialist
-colonialists
-colonials
-colonic
-colonies
-colonisation
-colonisations
-colonise
-colonised
-colonisers
-colonising
-colonist
-colonists
-colonnade
-colonnaded
-colonnades
-colons
-colony
-colossal
-colossally
-colossus
-colostomies
-colostomy
-colour
-colourant
-colourants
-colouration
-colourblind
-coloure
-colourful
-colourfully
-colouring
-colourings
-colourisation
-colourise
-colourised
-colourising
-colourless
-colours
-coloury
-cols
-colt
-colts
-columbus
-column
-columnar
-columned
-columnist
-columnists
-columns
-coma
-comas
-comatose
-comb
-combat
-combatant
-combatants
-combated
-combating
-combative
-combativeness
-combats
-combed
-comber
-combination
-combinations
-combinatorial
-combine
-combined
-combines
-combing
-combining
-combs
-combusted
-combustible
-combustibles
-combustion
-combusts
-come
-comeback
-comedian
-comedians
-comedies
-comedown
-comedy
-comeliness
-comely
-comer
-comers
-comes
-comestible
-comestibles
-comet
-cometary
-comets
-comfort
-comfortable
-comfortably
-comforted
-comforter
-comforters
-comforting
-comfortingly
-comforts
-comfy
-comic
-comical
-comically
-comics
-coming
-comings
-comity
-comma
-command
-commandant
-commanded
-commandeer
-commandeered
-commandeering
-commander
-commanders
-commanding
-commandingly
-commandment
-commandments
-commando
-commands
-commas
-commemorate
-commemorated
-commemorates
-commemorating
-commemoration
-commemorations
-commemorative
-commence
-commenced
-commencement
-commences
-commencing
-commend
-commendable
-commendably
-commendation
-commendations
-commended
-commending
-commends
-commensurate
-commensurately
-comment
-commentaries
-commentary
-commentate
-commentating
-commentator
-commentators
-commented
-commenter
-commenting
-comments
-commerce
-commercial
-commercialisation
-commercialise
-commercialised
-commercialism
-commercially
-commercials
-commiserate
-commiserated
-commiserating
-commiseration
-commiserations
-commissar
-commissariat
-commissars
-commission
-commissionaire
-commissioned
-commissioner
-commissioners
-commissioning
-commissions
-commit
-commitment
-commitments
-commits
-committal
-committed
-committee
-committees
-committing
-commode
-commodes
-commodious
-commodities
-commodity
-commodore
-commodores
-common
-commonalities
-commonality
-commoner
-commoners
-commonest
-commonlaw
-commonly
-commonness
-commonplace
-commonplaces
-commons
-commonsense
-commonsensical
-commonwealth
-commotion
-commotions
-communal
-communality
-communally
-commune
-communed
-communes
-communicable
-communicant
-communicants
-communicate
-communicated
-communicates
-communicating
-communication
-communications
-communicative
-communicativeness
-communicator
-communicators
-communing
-communion
-communions
-communique
-communiques
-communism
-communist
-communists
-communitarian
-communities
-community
-commutation
-commutative
-commutativity
-commutator
-commute
-commuted
-commuter
-commuters
-commutes
-commuting
-compact
-compacted
-compacting
-compaction
-compactions
-compactly
-compactness
-compacts
-companies
-companion
-companionable
-companionably
-companions
-companionship
-company
-comparability
-comparable
-comparably
-comparative
-comparatively
-comparatives
-comparator
-comparators
-compare
-compared
-compares
-comparing
-comparison
-comparisons
-compartment
-compartmentalisation
-compartmentalised
-compartmentalising
-compartments
-compass
-compassed
-compasses
-compassion
-compassionate
-compassionately
-compatibilities
-compatibility
-compatible
-compatibles
-compatibly
-compatriot
-compatriots
-compel
-compelled
-compelling
-compellingly
-compels
-compendia
-compendium
-compendiums
-compensate
-compensated
-compensates
-compensating
-compensation
-compensations
-compensator
-compensatory
-compere
-compete
-competed
-competence
-competences
-competencies
-competency
-competent
-competently
-competes
-competing
-competition
-competitions
-competitive
-competitively
-competitiveness
-competitor
-competitors
-compilable
-compilation
-compilations
-compile
-compiled
-compiler
-compilers
-compiles
-compiling
-complacency
-complacent
-complacently
-complain
-complainant
-complainants
-complained
-complainer
-complaining
-complainingly
-complains
-complaint
-complaints
-complaisant
-complement
-complementarity
-complementary
-complemented
-complementing
-complements
-completable
-complete
-completed
-completely
-completeness
-completes
-completing
-completion
-completions
-complex
-complexes
-complexion
-complexioned
-complexions
-complexities
-complexity
-complexly
-compliance
-compliant
-complicate
-complicated
-complicates
-complicating
-complication
-complications
-complicit
-complicity
-complied
-complies
-compliment
-complimentary
-complimented
-complimenting
-compliments
-complot
-comply
-complying
-component
-components
-comport
-compose
-composed
-composedly
-composer
-composers
-composes
-composing
-composite
-composites
-composition
-compositional
-compositions
-compositor
-compositors
-compost
-composts
-composure
-compound
-compounded
-compounding
-compounds
-comprehend
-comprehended
-comprehending
-comprehends
-comprehensibility
-comprehensible
-comprehensibly
-comprehension
-comprehensive
-comprehensively
-comprehensiveness
-comprehensives
-compress
-compressed
-compresses
-compressibility
-compressible
-compressing
-compression
-compressional
-compressions
-compressive
-compressor
-compressors
-comprise
-comprised
-comprises
-comprising
-compromise
-compromised
-compromises
-compromising
-comptroller
-compulsion
-compulsions
-compulsive
-compulsively
-compulsorily
-compulsory
-compunction
-computability
-computable
-computably
-computation
-computational
-computationally
-computations
-compute
-computed
-computer
-computerisation
-computerise
-computerised
-computerising
-computerliterate
-computers
-computes
-computing
-comrade
-comradeinarms
-comradely
-comrades
-comradeship
-con
-conakry
-concatenate
-concatenated
-concatenates
-concatenating
-concatenation
-concatenations
-concave
-concavity
-conceal
-concealed
-concealing
-concealment
-conceals
-concede
-conceded
-concedes
-conceding
-conceit
-conceited
-conceits
-conceivability
-conceivable
-conceivably
-conceive
-conceived
-conceives
-conceiving
-concentrate
-concentrated
-concentrates
-concentrating
-concentration
-concentrations
-concentrator
-concentrators
-concentric
-concept
-conception
-conceptions
-concepts
-conceptual
-conceptualisation
-conceptualisations
-conceptualise
-conceptualised
-conceptualising
-conceptually
-concern
-concerned
-concernedly
-concerning
-concerns
-concert
-concerted
-concertgoers
-concerti
-concertina
-concerto
-concerts
-concession
-concessional
-concessionary
-concessions
-concierge
-conciliar
-conciliate
-conciliating
-conciliation
-conciliator
-conciliatory
-concise
-concisely
-conciseness
-conclave
-conclaves
-conclude
-concluded
-concludes
-concluding
-conclusion
-conclusions
-conclusive
-conclusively
-concoct
-concocted
-concocting
-concoction
-concoctions
-concocts
-concomitant
-concomitantly
-concord
-concordance
-concordances
-concordant
-concordat
-concords
-concourse
-concourses
-concrete
-concreted
-concretely
-concreteness
-concretes
-concreting
-concretions
-concubine
-concubines
-concur
-concurred
-concurrence
-concurrency
-concurrent
-concurrently
-concurring
-concurs
-concuss
-concussed
-concussion
-condemn
-condemnable
-condemnation
-condemnations
-condemnatory
-condemned
-condemning
-condemns
-condensate
-condensation
-condensations
-condense
-condensed
-condenser
-condensers
-condenses
-condensing
-condescend
-condescended
-condescending
-condescendingly
-condescends
-condescension
-condiment
-condiments
-condition
-conditional
-conditionality
-conditionally
-conditionals
-conditioned
-conditioner
-conditioners
-conditioning
-conditions
-condole
-condoled
-condolence
-condolences
-condoles
-condonable
-condone
-condoned
-condones
-condoning
-condor
-condors
-conducive
-conduct
-conductance
-conducted
-conducting
-conduction
-conductive
-conductivities
-conductivity
-conductor
-conductors
-conductress
-conducts
-conduit
-conduits
-cone
-coned
-cones
-confabulate
-confection
-confectioner
-confectioners
-confectionery
-confectionist
-confections
-confederacy
-confederate
-confederates
-confederation
-confederations
-confer
-conference
-conferences
-conferencing
-conferment
-conferred
-conferring
-confers
-confess
-confessed
-confesses
-confessing
-confession
-confessional
-confessionals
-confessions
-confessor
-confessors
-confetti
-confidant
-confidante
-confidantes
-confidants
-confide
-confided
-confidence
-confidences
-confident
-confidential
-confidentiality
-confidentially
-confidently
-confides
-confiding
-confidingly
-configurable
-configuration
-configurations
-configure
-configured
-configures
-configuring
-confine
-confined
-confinement
-confinements
-confines
-confining
-confirm
-confirmation
-confirmations
-confirmatory
-confirmed
-confirming
-confirms
-confiscate
-confiscated
-confiscates
-confiscating
-confiscation
-confiscations
-confiscatory
-conflagration
-conflagrations
-conflated
-conflates
-conflating
-conflation
-conflict
-conflicted
-conflicting
-conflictingly
-conflicts
-conflictual
-confluence
-confluent
-confocal
-conform
-conformable
-conformal
-conformance
-conformation
-conformational
-conformed
-conforming
-conformism
-conformist
-conformists
-conformity
-conforms
-confound
-confounded
-confoundedly
-confounding
-confounds
-confront
-confrontation
-confrontational
-confrontations
-confronted
-confronting
-confronts
-confusable
-confuse
-confused
-confusedly
-confuser
-confuses
-confusing
-confusingly
-confusion
-confusions
-conga
-congeal
-congealed
-congealing
-congeals
-congenial
-congeniality
-congenital
-congenitally
-conger
-congest
-congested
-congesting
-congestion
-congestive
-conglomerate
-conglomerated
-conglomerates
-conglomeration
-congo
-congratulate
-congratulated
-congratulates
-congratulating
-congratulation
-congratulations
-congratulatory
-congregate
-congregated
-congregating
-congregation
-congregational
-congregations
-congress
-congresses
-congressional
-congressman
-congressmen
-congruence
-congruences
-congruency
-congruent
-congruential
-congruity
-conic
-conical
-conics
-conifer
-coniferous
-conifers
-conjectural
-conjecture
-conjectured
-conjectures
-conjecturing
-conjoin
-conjoined
-conjoining
-conjoint
-conjugacy
-conjugal
-conjugate
-conjugated
-conjugates
-conjugating
-conjugation
-conjugations
-conjunct
-conjunction
-conjunctions
-conjunctive
-conjunctivitis
-conjunctures
-conjure
-conjured
-conjurer
-conjurers
-conjures
-conjuring
-conjuror
-conjurors
-conjury
-conk
-conker
-conkers
-conman
-conmen
-connect
-connected
-connectedness
-connecting
-connection
-connectionless
-connections
-connective
-connectives
-connectivity
-connector
-connectors
-connects
-conned
-connexion
-connexions
-connivance
-connive
-connived
-conniving
-connoisseur
-connoisseurs
-connoisseurship
-connotation
-connotations
-connote
-connoted
-connotes
-connoting
-conquer
-conquerable
-conquered
-conquering
-conqueror
-conquerors
-conquers
-conquest
-conquests
-conquistador
-conquistadores
-cons
-consanguineous
-consanguinity
-conscience
-consciences
-consciencestricken
-conscientious
-conscientiously
-conscientiousness
-conscionable
-conscious
-consciously
-consciousness
-consciousnesses
-conscript
-conscripted
-conscripting
-conscription
-conscripts
-consecrate
-consecrated
-consecrating
-consecration
-consecutive
-consecutively
-consensual
-consensually
-consensus
-consent
-consented
-consenting
-consents
-consequence
-consequences
-consequent
-consequential
-consequentially
-consequently
-conservation
-conservationist
-conservationists
-conservations
-conservatism
-conservative
-conservatively
-conservativeness
-conservatives
-conservatoire
-conservator
-conservatories
-conservators
-conservatory
-conserve
-conserved
-conserves
-conserving
-consider
-considerable
-considerably
-considerate
-considerately
-consideration
-considerations
-considered
-considering
-considers
-consign
-consigned
-consignee
-consigning
-consignment
-consignments
-consigns
-consist
-consisted
-consistencies
-consistency
-consistent
-consistently
-consisting
-consists
-consolation
-consolations
-console
-consoled
-consoles
-consolidate
-consolidated
-consolidates
-consolidating
-consolidation
-consolidations
-consoling
-consolingly
-consonance
-consonant
-consonantal
-consonants
-consort
-consorted
-consortia
-consorting
-consortium
-consorts
-conspecific
-conspicuous
-conspicuously
-conspicuousness
-conspiracies
-conspiracy
-conspirator
-conspiratorial
-conspiratorially
-conspirators
-conspire
-conspired
-conspires
-conspiring
-constable
-constables
-constabularies
-constabulary
-constancy
-constant
-constantly
-constants
-constellation
-constellations
-consternating
-consternation
-constipated
-constipation
-constituencies
-constituency
-constituent
-constituents
-constitute
-constituted
-constitutes
-constituting
-constitution
-constitutional
-constitutionalism
-constitutionalists
-constitutionality
-constitutionally
-constitutions
-constitutive
-constitutively
-constrain
-constrained
-constraining
-constrains
-constraint
-constraints
-constrict
-constricted
-constricting
-constriction
-constrictions
-constrictive
-constrictor
-constrictors
-constricts
-construct
-constructable
-constructed
-constructing
-construction
-constructional
-constructions
-constructive
-constructively
-constructivism
-constructivist
-constructor
-constructors
-constructs
-construe
-construed
-construes
-construing
-consul
-consular
-consulate
-consulates
-consuls
-consult
-consultancies
-consultancy
-consultant
-consultants
-consultation
-consultations
-consultative
-consulted
-consulting
-consults
-consumable
-consumables
-consume
-consumed
-consumer
-consumerism
-consumerist
-consumers
-consumes
-consuming
-consummate
-consummated
-consummately
-consummation
-consumption
-consumptions
-consumptive
-contact
-contactable
-contacted
-contacting
-contacts
-contagion
-contagious
-contain
-containable
-contained
-container
-containers
-containing
-containment
-contains
-contaminant
-contaminants
-contaminate
-contaminated
-contaminates
-contaminating
-contamination
-contemplate
-contemplated
-contemplates
-contemplating
-contemplation
-contemplations
-contemplative
-contemporaneity
-contemporaneous
-contemporaneously
-contemporaries
-contemporary
-contempt
-contemptible
-contemptibly
-contemptuous
-contemptuously
-contend
-contended
-contender
-contenders
-contending
-contends
-content
-contented
-contentedly
-contenting
-contention
-contentions
-contentious
-contentiously
-contentment
-contents
-contest
-contestable
-contestant
-contestants
-contested
-contesting
-contests
-context
-contexts
-contextual
-contextualisation
-contextually
-contiguity
-contiguous
-contiguously
-continence
-continent
-continental
-continentals
-continents
-contingencies
-contingency
-contingent
-contingently
-contingents
-continua
-continuable
-continual
-continually
-continuance
-continuation
-continuations
-continue
-continued
-continues
-continuing
-continuities
-continuity
-continuous
-continuously
-continuum
-contort
-contorted
-contorting
-contortion
-contortionist
-contortions
-contorts
-contour
-contoured
-contouring
-contours
-contra
-contraband
-contraception
-contraceptive
-contraceptives
-contract
-contracted
-contractible
-contractile
-contracting
-contraction
-contractions
-contractor
-contractors
-contracts
-contractual
-contractually
-contradict
-contradicted
-contradicting
-contradiction
-contradictions
-contradictorily
-contradictory
-contradicts
-contradistinction
-contraflow
-contraflows
-contraindication
-contraindications
-contralto
-contraption
-contraptions
-contrapuntal
-contrarily
-contrariness
-contrariwise
-contrary
-contras
-contrast
-contrasted
-contrasting
-contrastingly
-contrastive
-contrasts
-contrasty
-contravene
-contravened
-contravenes
-contravening
-contravention
-contraventions
-contretemps
-contribute
-contributed
-contributes
-contributing
-contribution
-contributions
-contributor
-contributors
-contributory
-contrite
-contritely
-contrition
-contrivance
-contrivances
-contrive
-contrived
-contrives
-contriving
-control
-controllable
-controlled
-controller
-controllers
-controlling
-controls
-controversial
-controversially
-controversies
-controversy
-controvert
-controverted
-contumely
-contuse
-contusion
-contusions
-conundrum
-conundrums
-conurbation
-conurbations
-convalesce
-convalescence
-convalescent
-convalescing
-convect
-convected
-convecting
-convection
-convectional
-convective
-convector
-convects
-convene
-convened
-convener
-convenes
-convenience
-conveniences
-convenient
-conveniently
-convening
-convenor
-convenors
-convent
-conventicle
-convention
-conventional
-conventionalism
-conventionalist
-conventionality
-conventionally
-conventions
-convents
-converge
-converged
-convergence
-convergences
-convergent
-converges
-converging
-conversant
-conversation
-conversational
-conversationalist
-conversationalists
-conversationally
-conversations
-conversazione
-converse
-conversed
-conversely
-converses
-conversing
-conversion
-conversions
-convert
-converted
-converter
-converters
-convertibility
-convertible
-convertibles
-converting
-convertor
-convertors
-converts
-convex
-convexity
-convey
-conveyance
-conveyancing
-conveyed
-conveying
-conveyor
-conveyors
-conveys
-convict
-convicted
-convicting
-conviction
-convictions
-convicts
-convince
-convinced
-convinces
-convincing
-convincingly
-convivial
-conviviality
-convocation
-convocations
-convoluted
-convolution
-convolutions
-convolve
-convolved
-convoy
-convoys
-convulse
-convulsed
-convulses
-convulsing
-convulsion
-convulsions
-convulsive
-convulsively
-cony
-coo
-cooed
-cooing
-cook
-cookbook
-cookbooks
-cooked
-cooker
-cookers
-cookery
-cookies
-cooking
-cooks
-cookware
-cool
-coolant
-coolants
-cooled
-cooler
-coolers
-coolest
-cooling
-coolness
-cools
-coon
-coons
-coop
-cooped
-cooper
-cooperate
-cooperated
-cooperates
-cooperating
-cooperation
-cooperative
-cooperatively
-cooperatives
-coopers
-coops
-coordinate
-coordinated
-coordinates
-coordinating
-coordination
-coordinator
-coordinators
-coos
-cop
-cope
-coped
-copes
-copied
-copier
-copiers
-copies
-copilot
-coping
-copious
-copiously
-coplanar
-copout
-copouts
-copper
-copperplate
-coppers
-coppery
-coppice
-coppiced
-coppices
-coppicing
-copra
-coprocessor
-coprocessors
-coproduced
-coprolite
-coprophagous
-cops
-copse
-copses
-copulate
-copulating
-copulation
-copulations
-copulatory
-copy
-copyable
-copycat
-copycats
-copying
-copyist
-copyists
-copyright
-copyrightable
-copyrighted
-copyrighting
-copyrights
-copywriter
-coquette
-coquettes
-coquettish
-coquettishly
-cor
-coracle
-coral
-coralline
-corals
-cord
-cordage
-cordate
-corded
-cordial
-cordiality
-cordially
-cordials
-cordillera
-cordite
-cordless
-cordon
-cordoned
-cordons
-cords
-corduroy
-corduroys
-core
-cores
-corespondent
-corgi
-corgis
-coriander
-corinth
-cork
-corkage
-corked
-corks
-corkscrew
-corkscrews
-corky
-cormorant
-cormorants
-corn
-corncrake
-cornea
-corneal
-corneas
-corned
-corner
-cornered
-cornering
-corners
-cornerstone
-cornerstones
-cornet
-cornets
-cornfield
-cornfields
-cornflake
-cornflakes
-cornflour
-cornflower
-cornflowers
-cornice
-cornices
-cornish
-cornmeal
-corns
-cornucopia
-corny
-corollaries
-corollary
-corona
-coronal
-coronaries
-coronary
-coronas
-coronation
-coronations
-coroner
-coroners
-coronet
-coronets
-corpora
-corporal
-corporals
-corporate
-corporately
-corporates
-corporation
-corporations
-corporatism
-corporatist
-corporeal
-corporeally
-corps
-corpse
-corpses
-corpulent
-corpus
-corpuscle
-corpuscles
-corpuscular
-corral
-corralled
-corrals
-correct
-correctable
-corrected
-correcting
-correction
-correctional
-corrections
-corrective
-correctly
-correctness
-corrector
-correctors
-corrects
-correlate
-correlated
-correlates
-correlating
-correlation
-correlations
-correlative
-correspond
-corresponded
-correspondence
-correspondences
-correspondent
-correspondents
-corresponding
-correspondingly
-corresponds
-corridor
-corridors
-corrigenda
-corroborate
-corroborated
-corroborates
-corroborating
-corroboration
-corroborative
-corroboratory
-corrode
-corroded
-corrodes
-corroding
-corrosion
-corrosive
-corrugated
-corrugations
-corrupt
-corrupted
-corruptible
-corrupting
-corruption
-corruptions
-corruptly
-corrupts
-corsage
-corse
-corset
-corsets
-corsica
-corslet
-cortege
-cortex
-cortical
-corticosteroid
-corticosteroids
-cortisol
-cortisone
-coruscates
-corvette
-corvettes
-cosier
-cosiest
-cosily
-cosine
-cosines
-cosiness
-cosmetic
-cosmetically
-cosmetics
-cosmic
-cosmical
-cosmically
-cosmological
-cosmologically
-cosmologies
-cosmologist
-cosmologists
-cosmology
-cosmonaut
-cosmonauts
-cosmopolitan
-cosmopolitans
-cosmos
-cossacks
-cosset
-cosseted
-cossets
-cost
-costar
-costarred
-costarring
-costars
-costcutting
-costed
-costeffective
-costeffectiveness
-costefficient
-costing
-costings
-costive
-costless
-costlier
-costliest
-costliness
-costly
-costs
-costume
-costumed
-costumes
-cosy
-cot
-coterie
-coterminous
-cots
-cottage
-cottages
-cotton
-cottoned
-cottons
-couch
-couched
-couches
-couching
-cougar
-cougars
-cough
-coughed
-coughing
-coughs
-could
-couloir
-coulomb
-coulombs
-council
-councillor
-councillors
-councils
-counsel
-counselled
-counselling
-counsellor
-counsellors
-counsels
-count
-countability
-countable
-countably
-countdown
-counted
-countenance
-countenanced
-countenances
-countenancing
-counter
-counteract
-counteracted
-counteracting
-counteracts
-counterattack
-counterattacked
-counterattacks
-counterbalance
-counterbalanced
-counterbalancing
-countered
-counterfeit
-counterfeited
-counterfeiters
-counterfeiting
-counterfeits
-counterfoil
-counterfoils
-countering
-counterintelligence
-counterintuitive
-countermanded
-countermeasures
-counteroffensive
-counterpane
-counterpart
-counterparts
-counterpoint
-counterpointed
-counterpoints
-counterpoise
-counterproductive
-counterrevolution
-counterrevolutionaries
-counterrevolutionary
-counters
-countersign
-countersigned
-countersigns
-countess
-countesses
-counties
-counting
-countless
-countries
-country
-countryman
-countrymen
-countryside
-countrywide
-counts
-county
-coup
-coupe
-coupes
-couple
-coupled
-coupler
-couplers
-couples
-couplet
-couplets
-coupling
-couplings
-coupon
-coupons
-coups
-courage
-courageous
-courageously
-courgette
-courgettes
-courier
-couriers
-course
-coursebook
-coursed
-courses
-coursework
-coursing
-court
-courted
-courteous
-courteously
-courtesan
-courtesans
-courtesies
-courtesy
-courthouse
-courtier
-courtiers
-courting
-courtly
-courtmartial
-courtroom
-courtrooms
-courts
-courtship
-courtships
-courtyard
-courtyards
-couscous
-cousin
-cousinly
-cousins
-couther
-couture
-couturier
-couturiers
-covalent
-covalently
-covariance
-covariances
-cove
-coven
-covenant
-covenanted
-covenanters
-covenants
-covens
-cover
-coverage
-coverages
-coveralls
-covered
-covering
-coverings
-coverlet
-coverlets
-covers
-coversheet
-covert
-covertly
-coverts
-coverup
-coverups
-coves
-covet
-coveted
-coveting
-covetous
-covetousness
-covets
-cow
-coward
-cowardice
-cowardly
-cowards
-cowboy
-cowboys
-cowed
-cower
-cowered
-cowering
-cowers
-cowgirl
-cowgirls
-cowhand
-cowherd
-cowing
-cowl
-cowled
-cowling
-coworker
-coworkers
-cowriter
-cowritten
-cows
-cowshed
-cowsheds
-cowslip
-cowslips
-cox
-coxcomb
-coxcombs
-coxed
-coxes
-coxing
-coxswain
-coy
-coyly
-coyness
-coyote
-coyotes
-cozier
-crab
-crabby
-crabs
-crack
-crackable
-crackdown
-crackdowns
-cracked
-cracker
-crackers
-cracking
-crackle
-crackled
-crackles
-crackling
-crackly
-crackpot
-crackpots
-cracks
-cradle
-cradled
-cradles
-cradling
-craft
-crafted
-crafter
-craftier
-craftiest
-craftily
-crafting
-crafts
-craftsman
-craftsmanship
-craftsmen
-craftspeople
-crafty
-crag
-craggy
-crags
-cram
-crammed
-crammer
-cramming
-cramp
-cramped
-cramping
-crampon
-crampons
-cramps
-crams
-cran
-cranberries
-cranberry
-crane
-craned
-cranes
-cranial
-craning
-cranium
-crank
-cranked
-cranking
-cranks
-crankshaft
-cranky
-crannies
-cranny
-crap
-crash
-crashed
-crasher
-crashers
-crashes
-crashing
-crashingly
-crashland
-crashlanded
-crashlanding
-crass
-crasser
-crassly
-crassness
-crate
-crateful
-crater
-cratered
-craters
-crates
-cravat
-cravats
-crave
-craved
-craven
-cravenly
-craves
-craving
-cravings
-crawl
-crawled
-crawler
-crawlers
-crawling
-crawls
-craws
-crayfish
-crayon
-crayoned
-crayons
-craze
-crazed
-crazes
-crazier
-craziest
-crazily
-craziness
-crazy
-creak
-creaked
-creakier
-creakiest
-creaking
-creaks
-creaky
-cream
-creamed
-creamer
-creamery
-creamier
-creamiest
-creaming
-creams
-creamy
-crease
-creased
-creases
-creasing
-creatable
-create
-created
-creates
-creating
-creation
-creationism
-creationist
-creationists
-creations
-creative
-creatively
-creativeness
-creativity
-creator
-creators
-creature
-creatures
-creche
-creches
-credence
-credentials
-credibility
-credible
-credibly
-credit
-creditability
-creditable
-creditably
-credited
-crediting
-creditor
-creditors
-credits
-creditworthiness
-creditworthy
-credo
-credulity
-credulous
-creed
-creeds
-creek
-creeks
-creel
-creep
-creeper
-creepers
-creeping
-creeps
-creepy
-cremate
-cremated
-cremates
-cremation
-cremations
-crematoria
-crematorium
-creme
-crenellated
-crenellation
-crenellations
-creole
-creoles
-creosote
-crepe
-crept
-crepuscular
-crescendo
-crescent
-crescents
-cress
-crest
-crested
-crestfallen
-cresting
-crests
-cretaceous
-cretan
-cretans
-crete
-cretin
-cretinous
-cretins
-crevasse
-crevasses
-crevice
-crevices
-crew
-crewed
-crewing
-crewman
-crewmen
-crews
-crib
-cribbage
-cribbed
-cribbing
-cribs
-crick
-cricket
-cricketer
-cricketers
-cricketing
-crickets
-cried
-crier
-cries
-crim
-crime
-crimea
-crimes
-criminal
-criminalisation
-criminalise
-criminalised
-criminalising
-criminality
-criminally
-criminals
-criminological
-criminologist
-criminologists
-criminology
-crimp
-crimped
-crimping
-crimson
-cringe
-cringed
-cringes
-cringing
-crinkle
-crinkled
-crinkling
-crinkly
-crinoline
-cripple
-crippled
-cripples
-crippling
-cripplingly
-crises
-crisis
-crisp
-crisped
-crisper
-crispier
-crispiest
-crisply
-crispness
-crisps
-crispy
-crisscrossed
-crisscrosses
-criteria
-criterion
-critic
-critical
-critically
-criticise
-criticised
-criticises
-criticising
-criticism
-criticisms
-critics
-critique
-critiques
-critter
-croak
-croaked
-croakier
-croakiest
-croaking
-croaks
-croatia
-croatian
-crochet
-crocheted
-crochets
-crock
-crockery
-crocks
-crocodile
-crocodiles
-crocus
-crocuses
-croft
-crofter
-crofters
-crofting
-crofts
-croissant
-croissants
-crone
-crones
-cronies
-crony
-crook
-crooked
-crookedly
-crookedness
-crooking
-crooks
-croon
-crooned
-crooner
-crooners
-crooning
-croons
-crop
-cropped
-cropper
-croppers
-cropping
-crops
-croquet
-croqueted
-croqueting
-croquette
-crores
-crosier
-crosiers
-cross
-crossbar
-crossbars
-crossbones
-crossbow
-crossbows
-crossbred
-crosscheck
-crosschecked
-crosschecking
-crosschecks
-crosscountry
-crossed
-crosser
-crosses
-crossexamination
-crossexamine
-crossexamined
-crossexamines
-crossexamining
-crossfertilisation
-crossfire
-crossing
-crossings
-crossly
-crossness
-crossover
-crossovers
-crossreference
-crossreferenced
-crossreferences
-crossreferencing
-crossroads
-crosssection
-crosssectional
-crosssections
-crosstalk
-crossways
-crosswind
-crosswinds
-crossword
-crosswords
-crotch
-crotchet
-crotchetiness
-crotchety
-crotchless
-crouch
-crouched
-crouches
-crouching
-croup
-croupier
-croutons
-crow
-crowbar
-crowbars
-crowd
-crowded
-crowding
-crowds
-crowed
-crowing
-crown
-crowned
-crowning
-crowns
-crows
-crozier
-croziers
-crucial
-crucially
-cruciate
-crucible
-crucibles
-crucifiable
-crucified
-crucifix
-crucifixes
-crucifixion
-crucifixions
-cruciform
-crucify
-crucifying
-crude
-crudely
-crudeness
-cruder
-crudest
-crudities
-crudity
-cruel
-crueler
-cruelest
-crueller
-cruellest
-cruelly
-cruelness
-cruelties
-cruelty
-cruise
-cruised
-cruiser
-cruisers
-cruises
-cruising
-cruller
-crumb
-crumbing
-crumble
-crumbled
-crumbles
-crumblier
-crumbliest
-crumbling
-crumbly
-crumbs
-crumby
-crummy
-crumpet
-crumpets
-crumple
-crumpled
-crumples
-crumpling
-crunch
-crunched
-cruncher
-crunchers
-crunches
-crunchier
-crunchiest
-crunching
-crunchy
-crusade
-crusaded
-crusader
-crusaders
-crusades
-crusading
-crush
-crushed
-crusher
-crushers
-crushes
-crushing
-crushingly
-crust
-crustacean
-crustaceans
-crustal
-crusted
-crustier
-crustiest
-crusts
-crusty
-crutch
-crutches
-crux
-cruxes
-cry
-crying
-cryings
-cryogenic
-cryogenics
-cryostat
-crypt
-cryptanalysis
-cryptanalyst
-cryptanalytic
-cryptic
-cryptically
-cryptogram
-cryptographer
-cryptographers
-cryptographic
-cryptographically
-cryptography
-cryptology
-crypts
-crystal
-crystalclear
-crystalline
-crystallisation
-crystallise
-crystallised
-crystallises
-crystallising
-crystallographer
-crystallographers
-crystallographic
-crystallography
-crystals
-cub
-cuba
-cuban
-cubans
-cube
-cubed
-cubes
-cubic
-cubical
-cubically
-cubicle
-cubicles
-cubing
-cubism
-cubist
-cubistic
-cubists
-cubit
-cubits
-cuboid
-cubs
-cuckold
-cuckolded
-cuckoo
-cuckoos
-cucumber
-cucumbers
-cud
-cuddle
-cuddled
-cuddles
-cuddlier
-cuddliest
-cuddliness
-cuddling
-cuddly
-cudgel
-cudgels
-cuds
-cue
-cued
-cueing
-cues
-cuff
-cuffed
-cuffing
-cuffs
-cuing
-cuirass
-cuisine
-culdesac
-culinary
-cull
-culled
-culling
-culls
-culminate
-culminated
-culminates
-culminating
-culmination
-culpability
-culpable
-culpably
-culprit
-culprits
-cult
-cultivable
-cultivar
-cultivate
-cultivated
-cultivates
-cultivating
-cultivation
-cultivations
-cultivator
-cultivators
-cults
-cultural
-culturally
-culture
-cultured
-cultures
-culturing
-cultus
-culvert
-cumbersome
-cumbersomely
-cumlaude
-cummerbund
-cumulative
-cumulatively
-cumulus
-cuneiform
-cunnilingus
-cunning
-cunningly
-cup
-cupboard
-cupboards
-cupful
-cupid
-cupidinously
-cupidity
-cupola
-cupolas
-cupped
-cupping
-cuprous
-cups
-cur
-curable
-curare
-curate
-curated
-curates
-curative
-curator
-curatorial
-curators
-curatorships
-curb
-curbed
-curbing
-curbs
-curd
-curdle
-curdled
-curdles
-curdling
-curds
-cure
-cured
-curer
-cures
-curfew
-curfews
-curia
-curial
-curie
-curies
-curing
-curio
-curiosities
-curiosity
-curious
-curiously
-curl
-curled
-curlers
-curlew
-curlews
-curlicues
-curlier
-curliest
-curliness
-curling
-curls
-curly
-curmudgeons
-currant
-currants
-currencies
-currency
-current
-currently
-currents
-curricle
-curricula
-curricular
-curriculum
-curried
-curries
-curry
-currying
-curs
-curse
-cursed
-curses
-cursing
-cursive
-cursor
-cursorily
-cursors
-cursory
-curt
-curtail
-curtailed
-curtailing
-curtailment
-curtailments
-curtails
-curtain
-curtained
-curtaining
-curtains
-curtilage
-curtly
-curtness
-curtsey
-curtseyed
-curtseying
-curtseys
-curtsied
-curtsies
-curtsy
-curtsying
-curvaceous
-curvature
-curvatures
-curve
-curved
-curves
-curvilinear
-curving
-curvy
-cushion
-cushioned
-cushioning
-cushions
-cusp
-cusps
-cuss
-cussedness
-custard
-custards
-custodial
-custodian
-custodians
-custodianship
-custody
-custom
-customarily
-customary
-customer
-customers
-customisable
-customisation
-customisations
-customise
-customised
-customising
-customs
-cut
-cutback
-cutbacks
-cute
-cutely
-cuteness
-cutest
-cuticle
-cuticles
-cutlass
-cutlasses
-cutler
-cutlery
-cutlet
-cutlets
-cutout
-cutouts
-cutprice
-cutrate
-cuts
-cutter
-cutters
-cutthroat
-cutting
-cuttingly
-cuttings
-cuttle
-cuttlefish
-cyan
-cyanide
-cyanogen
-cybernetic
-cybernetics
-cyberpunk
-cyberspace
-cyborg
-cycad
-cycads
-cycle
-cycled
-cycles
-cycleway
-cycleways
-cyclic
-cyclical
-cyclically
-cycling
-cyclist
-cyclists
-cycloid
-cyclone
-cyclones
-cyclops
-cyclotron
-cyclotrons
-cygnet
-cygnets
-cylinder
-cylinders
-cylindrical
-cylindrically
-cymbal
-cymbals
-cynic
-cynical
-cynically
-cynicism
-cynics
-cypher
-cyphers
-cypress
-cypresses
-cyprian
-cyprians
-cypriot
-cypriots
-cyprus
-cyst
-cysteine
-cystic
-cystine
-cystitis
-cysts
-cytochrome
-cytogenetic
-cytological
-cytology
-cytoplasm
-cytoplasmic
-cytosine
-cytotoxic
-czar
-czars
-czech
-czechs
-dab
-dabbed
-dabbing
-dabble
-dabbled
-dabbler
-dabbles
-dabbling
-dabs
-dace
-dacha
-dachau
-dachshund
-dactyl
-dactylic
-dactyls
-dad
-daddies
-daddy
-daddylonglegs
-dado
-dads
-daemon
-daemonic
-daemons
-daffodil
-daffodils
-daffy
-daft
-dafter
-daftest
-daftness
-dagama
-dagga
-dagger
-daggers
-dahlia
-dahlias
-dahomey
-dailies
-daily
-daintier
-daintiest
-daintily
-daintiness
-dainty
-dairies
-dairy
-dairying
-dairyman
-dairymen
-dais
-daisies
-daisy
-dakar
-dakoits
-dale
-dales
-dallas
-dalliance
-dallied
-dally
-dallying
-dam
-damage
-damaged
-damages
-damaging
-damagingly
-damascus
-damask
-dame
-dames
-dammed
-damming
-damn
-damnable
-damnably
-damnation
-damned
-damnify
-damning
-damningly
-damns
-damp
-damped
-dampen
-dampened
-dampening
-dampens
-damper
-dampers
-dampest
-damping
-dampish
-damply
-dampness
-damps
-dams
-damsel
-damsels
-damson
-damsons
-dan
-dance
-danceable
-danced
-dancer
-dancers
-dances
-dancing
-dandelion
-dandelions
-dandies
-dandruff
-dandy
-dane
-danes
-danger
-dangerous
-dangerously
-dangerousness
-dangers
-dangle
-dangled
-dangles
-dangling
-daniel
-danish
-dank
-dankest
-dante
-danube
-danzig
-dapper
-dapple
-dappled
-dapples
-dare
-dared
-daredevil
-dares
-daring
-daringly
-dark
-darken
-darkened
-darkening
-darkens
-darker
-darkest
-darkish
-darkly
-darkness
-darkroom
-darkrooms
-darling
-darlings
-darn
-darned
-darning
-darns
-dart
-dartboard
-dartboards
-darted
-darter
-darters
-darting
-darts
-darwin
-dash
-dashboard
-dashed
-dashes
-dashing
-dassie
-dassies
-dastardly
-data
-database
-databases
-datable
-date
-dated
-dateline
-dates
-dating
-dative
-datum
-daub
-daubed
-dauber
-daubing
-daughter
-daughterinlaw
-daughters
-daughtersinlaw
-daunt
-daunted
-daunting
-dauntingly
-dauntless
-daunts
-dauphin
-dauphins
-david
-davinci
-dawdle
-dawdled
-dawdling
-dawn
-dawned
-dawning
-dawns
-day
-daybreak
-daycare
-daydream
-daydreaming
-daydreams
-daylight
-daylights
-daylong
-dayold
-days
-daytime
-daze
-dazed
-dazedly
-dazing
-dazzle
-dazzled
-dazzler
-dazzles
-dazzling
-dazzlingly
-dday
-deacon
-deaconess
-deaconesses
-deacons
-deactivate
-deactivated
-deactivates
-deactivating
-deactivation
-dead
-deadbeat
-deaden
-deadend
-deadened
-deadening
-deadens
-deader
-deadlier
-deadliest
-deadline
-deadlines
-deadlock
-deadlocked
-deadlocking
-deadlocks
-deadly
-deadness
-deadon
-deadpan
-deadsea
-deaf
-deafanddumb
-deafen
-deafened
-deafening
-deafeningly
-deafens
-deafer
-deafest
-deafness
-deal
-dealer
-dealers
-dealership
-dealerships
-dealing
-dealings
-deals
-dealt
-dean
-deanery
-deans
-dear
-dearer
-dearest
-dearie
-dearies
-dearly
-dearness
-dears
-dearth
-deary
-death
-deathbed
-deathless
-deathly
-deaths
-deb
-debacle
-debacles
-debar
-debark
-debarred
-debars
-debase
-debased
-debasement
-debaser
-debasing
-debatable
-debate
-debated
-debater
-debaters
-debates
-debating
-debauch
-debauched
-debauchery
-debenture
-debentures
-debilitate
-debilitated
-debilitating
-debility
-debit
-debited
-debiting
-debits
-debonair
-debone
-deboned
-debones
-debrief
-debriefed
-debriefing
-debris
-debt
-debtor
-debtors
-debts
-debug
-debugged
-debugger
-debuggers
-debugging
-debugs
-debunk
-debunks
-debut
-debutant
-debutante
-debutantes
-debutants
-debuts
-decade
-decadence
-decadent
-decades
-decaf
-decaffeinate
-decaffeinated
-decagon
-decagons
-decamp
-decamped
-decant
-decanted
-decanter
-decanters
-decanting
-decants
-decapitate
-decapitated
-decapitates
-decapitating
-decapitation
-decapitations
-decapod
-decathlon
-decay
-decayed
-decaying
-decays
-decease
-deceased
-deceases
-deceit
-deceitful
-deceitfulness
-deceits
-deceive
-deceived
-deceiver
-deceives
-deceiving
-decelerate
-decelerated
-decelerates
-decelerating
-deceleration
-decelerations
-december
-decency
-decent
-decently
-decentralisation
-decentralise
-decentralised
-decentralising
-deception
-deceptions
-deceptive
-deceptively
-decibel
-decibels
-decidability
-decidable
-decide
-decided
-decidedly
-decider
-decides
-deciding
-deciduous
-decile
-deciles
-decilitre
-decimal
-decimalisation
-decimalise
-decimals
-decimate
-decimated
-decimating
-decimation
-decimetres
-decipher
-decipherable
-deciphered
-deciphering
-decipherment
-decipherments
-decision
-decisions
-decisive
-decisively
-decisiveness
-deck
-deckchair
-deckchairs
-decked
-decker
-decking
-decks
-declaim
-declaimed
-declaiming
-declaims
-declamation
-declamatory
-declaration
-declarations
-declarative
-declaratory
-declare
-declared
-declarer
-declarers
-declares
-declaring
-declassification
-declassified
-declension
-declensions
-declination
-declinations
-decline
-declined
-declines
-declining
-declivity
-deco
-decode
-decoded
-decoder
-decoders
-decodes
-decoding
-decoke
-decolonisation
-decommission
-decommissioned
-decommissioning
-decomposable
-decompose
-decomposed
-decomposes
-decomposing
-decomposition
-decompositions
-decompress
-decompressed
-decompressing
-decompression
-decongestants
-deconstruct
-deconstructed
-deconstructing
-deconstruction
-deconstructionist
-deconstructive
-decontaminated
-decontaminating
-decontamination
-deconvolution
-deconvolve
-decor
-decorate
-decorated
-decorates
-decorating
-decoration
-decorations
-decorative
-decoratively
-decorator
-decorators
-decorous
-decorously
-decors
-decorum
-decouple
-decoupled
-decoupling
-decoy
-decoyed
-decoying
-decoys
-decrease
-decreased
-decreases
-decreasing
-decreasingly
-decree
-decreed
-decreeing
-decrees
-decrement
-decremental
-decremented
-decrementing
-decrements
-decrepit
-decrepitude
-decried
-decries
-decriminalisation
-decriminalise
-decriminalised
-decriminalising
-decry
-decrying
-decrypt
-decrypted
-decrypting
-decryption
-decrypts
-decustomised
-dedicate
-dedicated
-dedicates
-dedicating
-dedication
-dedications
-deduce
-deduced
-deduces
-deducible
-deducing
-deduct
-deducted
-deductible
-deducting
-deduction
-deductions
-deductive
-deductively
-deducts
-dee
-deed
-deeds
-deejay
-deem
-deemed
-deeming
-deems
-deep
-deepen
-deepened
-deepening
-deepens
-deeper
-deepest
-deepfreeze
-deepfreezing
-deepfried
-deepfrozen
-deepish
-deeply
-deepness
-deeprooted
-deeps
-deepsea
-deepseated
-deer
-deerstalker
-deerstalkers
-deerstalking
-deface
-defaced
-defaces
-defacing
-defacto
-defamation
-defamatory
-defame
-defamed
-defamer
-defames
-defaming
-default
-defaulted
-defaulter
-defaulters
-defaulting
-defaults
-defeat
-defeated
-defeater
-defeating
-defeatism
-defeatist
-defeats
-defecate
-defecating
-defect
-defected
-defecting
-defection
-defections
-defective
-defectiveness
-defectives
-defector
-defectors
-defects
-defence
-defenceless
-defencelessness
-defences
-defend
-defendant
-defendants
-defended
-defender
-defenders
-defending
-defends
-defenestrate
-defenestrated
-defenestration
-defenses
-defensibility
-defensible
-defensive
-defensively
-defensiveness
-defer
-deference
-deferential
-deferentially
-deferment
-deferral
-deferred
-deferring
-defers
-defiance
-defiant
-defiantly
-defibrillator
-defibrillators
-deficiencies
-deficiency
-deficient
-deficit
-deficits
-defied
-defier
-defies
-defile
-defiled
-defilement
-defiles
-defiling
-definable
-definably
-define
-defined
-definer
-defines
-defining
-definite
-definitely
-definiteness
-definition
-definitional
-definitions
-definitive
-definitively
-definitiveness
-deflatable
-deflate
-deflated
-deflates
-deflating
-deflation
-deflationary
-deflect
-deflected
-deflecting
-deflection
-deflections
-deflector
-deflectors
-deflects
-deflower
-deflowering
-defoliants
-defoliation
-deforestation
-deforested
-deform
-deformable
-deformation
-deformations
-deformed
-deforming
-deformities
-deformity
-deforms
-defragmentation
-defraud
-defrauded
-defrauding
-defrauds
-defray
-defrayed
-defrost
-defrosted
-defrosting
-defrosts
-deft
-defter
-deftly
-deftness
-defunct
-defuse
-defused
-defuses
-defusing
-defy
-defying
-degas
-degauss
-degaussed
-degaussing
-degeneracies
-degeneracy
-degenerate
-degenerated
-degenerates
-degenerating
-degeneration
-degenerative
-degradable
-degradation
-degradations
-degrade
-degraded
-degrades
-degrading
-degrease
-degree
-degrees
-dehorn
-dehumanised
-dehumanises
-dehumanising
-dehumidifier
-dehydrate
-dehydrated
-dehydrating
-dehydration
-deification
-deified
-deifies
-deify
-deifying
-deism
-deist
-deists
-deities
-deity
-deject
-dejected
-dejectedly
-dejection
-dejects
-deklerk
-delate
-delay
-delayed
-delaying
-delays
-delectable
-delectation
-delegate
-delegated
-delegates
-delegating
-delegation
-delegations
-deletable
-delete
-deleted
-deleter
-deleterious
-deleteriously
-deletes
-deleting
-deletion
-deletions
-delhi
-deli
-deliberate
-deliberated
-deliberately
-deliberating
-deliberation
-deliberations
-deliberative
-delible
-delicacies
-delicacy
-delicate
-delicately
-delicatessen
-delicatessens
-delicious
-deliciously
-delict
-delight
-delighted
-delightedly
-delightful
-delightfully
-delighting
-delights
-delilah
-delimit
-delimited
-delimiter
-delimiters
-delimiting
-delimits
-delineate
-delineated
-delineates
-delineating
-delineation
-delinquency
-delinquent
-delinquents
-deliquesced
-deliquescent
-delirious
-deliriously
-delirium
-deliver
-deliverable
-deliverance
-delivered
-deliverer
-deliverers
-deliveries
-delivering
-delivers
-delivery
-dell
-dells
-delphi
-delphiniums
-delta
-deltas
-deltoid
-deltoids
-delude
-deluded
-deludes
-deluding
-deluge
-deluged
-deluges
-deluging
-delusion
-delusional
-delusions
-delusive
-deluxe
-delve
-delved
-delves
-delving
-demagnetisation
-demagnetise
-demagog
-demagogic
-demagogue
-demagoguery
-demagogues
-demagogy
-demand
-demanded
-demander
-demanding
-demands
-demarcate
-demarcated
-demarcating
-demarcation
-demarcations
-dematerialise
-dematerialised
-dematerialises
-demean
-demeaned
-demeaning
-demeanour
-demeans
-dement
-demented
-dementedly
-dementia
-demerge
-demerit
-demigod
-demigods
-demijohns
-demilitarisation
-demilitarised
-demise
-demised
-demises
-demist
-demists
-demo
-demobilisation
-demobilised
-demobs
-democracies
-democracy
-democrat
-democratic
-democratically
-democratisation
-democratising
-democrats
-demodulator
-demographer
-demographers
-demographic
-demographically
-demographics
-demography
-demolish
-demolished
-demolisher
-demolishes
-demolishing
-demolition
-demolitions
-demon
-demonic
-demonise
-demonology
-demons
-demonstrable
-demonstrably
-demonstrate
-demonstrated
-demonstrates
-demonstrating
-demonstration
-demonstrations
-demonstrative
-demonstratively
-demonstratives
-demonstrator
-demonstrators
-demoralisation
-demoralise
-demoralised
-demoralising
-demote
-demoted
-demotes
-demotic
-demotion
-demount
-demountable
-demounted
-demounting
-demur
-demure
-demurely
-demurred
-demurring
-demurs
-demystification
-demystify
-demystifying
-den
-denationalisation
-denatured
-denaturing
-dendrites
-dendritic
-dendrochronological
-dendrochronology
-deniable
-denial
-denials
-denied
-denier
-deniers
-denies
-denigrate
-denigrated
-denigrates
-denigrating
-denigration
-denigrations
-denim
-denims
-denizen
-denizens
-denmark
-denominated
-denomination
-denominational
-denominations
-denominator
-denominators
-denotation
-denotational
-denotations
-denote
-denoted
-denotes
-denoting
-denouement
-denounce
-denounced
-denouncements
-denounces
-denouncing
-dens
-dense
-densely
-denseness
-denser
-densest
-densities
-densitometry
-density
-dent
-dental
-dented
-dentin
-dentine
-denting
-dentist
-dentistry
-dentists
-dentition
-dents
-denture
-dentures
-denudation
-denude
-denuded
-denudes
-denunciation
-denunciations
-denver
-deny
-denying
-deodorant
-deodorants
-deodorised
-depart
-departed
-departer
-departing
-department
-departmental
-departmentally
-departments
-departs
-departure
-departures
-depend
-dependability
-dependable
-dependant
-dependants
-depended
-dependence
-dependencies
-dependency
-dependent
-depending
-depends
-depersonalisation
-depersonalising
-depict
-depicted
-depicting
-depiction
-depictions
-depicts
-deplete
-depleted
-depleting
-depletion
-deplorable
-deplorably
-deplore
-deplored
-deplores
-deploring
-deploy
-deployed
-deploying
-deployment
-deployments
-deploys
-depolarisation
-depolarisations
-depoliticisation
-deponent
-depopulated
-depopulation
-deport
-deportation
-deportations
-deported
-deportee
-deportees
-deporting
-deportment
-deports
-depose
-deposed
-deposing
-deposit
-depositary
-deposited
-depositing
-deposition
-depositional
-depositions
-depositories
-depositors
-depository
-deposits
-depot
-depots
-deprave
-depraved
-depraves
-depraving
-depravity
-deprecate
-deprecated
-deprecates
-deprecating
-deprecatingly
-deprecation
-deprecations
-deprecatory
-depreciate
-depreciated
-depreciating
-depreciation
-depredation
-depredations
-depress
-depressant
-depressants
-depressed
-depresses
-depressing
-depressingly
-depression
-depressions
-depressive
-depressives
-deprivation
-deprivations
-deprive
-deprived
-deprives
-depriving
-depth
-depths
-deputation
-deputations
-depute
-deputed
-deputes
-deputies
-deputise
-deputised
-deputises
-deputising
-deputy
-derail
-derailed
-derailing
-derailment
-derails
-derange
-deranged
-derangement
-derate
-derated
-derates
-derbies
-derby
-deregulate
-deregulated
-deregulating
-deregulation
-derelict
-dereliction
-derelictions
-deride
-derided
-deriders
-derides
-deriding
-derision
-derisive
-derisively
-derisory
-derivable
-derivation
-derivations
-derivative
-derivatively
-derivatives
-derive
-derived
-derives
-deriving
-dermal
-dermatitis
-dermatological
-dermatologist
-dermatologists
-dermatology
-dermic
-dermis
-derogate
-derogation
-derogations
-derogatory
-derrick
-dervishes
-desalination
-desalt
-desaturated
-descant
-descend
-descendant
-descendants
-descended
-descendent
-descender
-descenders
-descending
-descends
-descent
-descents
-describable
-describe
-described
-describer
-describers
-describes
-describing
-description
-descriptions
-descriptive
-descriptively
-descriptiveness
-descriptivism
-descriptor
-descriptors
-desecrate
-desecrated
-desecrates
-desecrating
-desecration
-desegregation
-deselected
-desensitising
-desert
-deserted
-deserter
-deserters
-desertification
-deserting
-desertion
-desertions
-deserts
-deserve
-deserved
-deservedly
-deserves
-deserving
-desiccated
-desiccation
-desiccator
-desiderata
-desideratum
-design
-designable
-designate
-designated
-designates
-designating
-designation
-designational
-designations
-designator
-designators
-designed
-designedly
-designer
-designers
-designing
-designs
-desirabilia
-desirability
-desirable
-desirableness
-desirably
-desire
-desired
-desires
-desiring
-desirous
-desist
-desisted
-desisting
-desk
-deskilling
-desks
-desktop
-desktops
-desolate
-desolated
-desolating
-desolation
-desorption
-despair
-despaired
-despairing
-despairingly
-despairs
-despatch
-despatched
-despatches
-despatching
-desperado
-desperate
-desperately
-desperation
-despicable
-despicably
-despisal
-despise
-despised
-despises
-despising
-despite
-despoil
-despoiled
-despoiling
-despond
-despondency
-despondent
-despondently
-despot
-despotic
-despotism
-despots
-dessert
-desserts
-dessicated
-dessication
-destabilisation
-destabilise
-destabilised
-destabilising
-destination
-destinations
-destine
-destined
-destinies
-destiny
-destitute
-destitution
-destroy
-destroyable
-destroyed
-destroyer
-destroyers
-destroying
-destroys
-destruct
-destruction
-destructive
-destructively
-destructiveness
-desuetude
-desultorily
-desultoriness
-desultory
-detach
-detachable
-detached
-detaches
-detaching
-detachment
-detachments
-detail
-detailed
-detailing
-details
-detain
-detained
-detainee
-detainees
-detainer
-detaining
-detains
-detect
-detectability
-detectable
-detectably
-detected
-detecting
-detection
-detections
-detective
-detectives
-detector
-detectors
-detects
-detent
-detente
-detention
-detentions
-deter
-detergent
-detergents
-deteriorate
-deteriorated
-deteriorates
-deteriorating
-deterioration
-determinable
-determinacy
-determinant
-determinants
-determinate
-determinately
-determination
-determinations
-determinative
-determine
-determined
-determinedly
-determiner
-determines
-determining
-determinism
-determinist
-deterministic
-deterministically
-deterred
-deterrence
-deterrent
-deterrents
-deterring
-deters
-detest
-detestable
-detestably
-detestation
-detested
-detester
-detesters
-detesting
-detests
-dethrone
-dethroned
-detonate
-detonated
-detonates
-detonating
-detonation
-detonations
-detonator
-detonators
-detour
-detoured
-detours
-detox
-detoxification
-detoxify
-detract
-detracted
-detracting
-detraction
-detractor
-detractors
-detracts
-detriment
-detrimental
-detrimentally
-detrital
-detritus
-detroit
-deuce
-deuced
-deuces
-deuterium
-deuteron
-devaluation
-devaluations
-devalue
-devalued
-devalues
-devaluing
-devastate
-devastated
-devastating
-devastatingly
-devastation
-develop
-developed
-developer
-developers
-developing
-development
-developmental
-developmentally
-developments
-develops
-deviance
-deviancy
-deviant
-deviants
-deviate
-deviated
-deviates
-deviating
-deviation
-deviations
-device
-devices
-devil
-devilish
-devilishly
-devilled
-devilment
-devilry
-devils
-devious
-deviously
-deviousness
-devisal
-devise
-devised
-deviser
-devises
-devising
-devoice
-devoid
-devoir
-devolution
-devolve
-devolved
-devolving
-devote
-devoted
-devotedly
-devotedness
-devotee
-devotees
-devotes
-devoting
-devotion
-devotional
-devotions
-devour
-devoured
-devourer
-devourers
-devouring
-devours
-devout
-devoutly
-devoutness
-dew
-dewdrop
-dewdrops
-dews
-dewy
-dexterity
-dexterous
-dexterously
-dextral
-dextrose
-dextrous
-dextrously
-dhow
-diabetes
-diabetic
-diabetics
-diabolic
-diabolical
-diabolically
-diabolism
-diachronic
-diaconal
-diacritical
-diacriticals
-diacritics
-diadem
-diadems
-diagnosable
-diagnose
-diagnosed
-diagnoses
-diagnosing
-diagnosis
-diagnostic
-diagnostically
-diagnostician
-diagnostics
-diagonal
-diagonalise
-diagonalised
-diagonalises
-diagonalising
-diagonally
-diagonals
-diagram
-diagrammatic
-diagrammatically
-diagrams
-dial
-dialect
-dialectal
-dialectic
-dialectical
-dialectically
-dialectics
-dialects
-dialing
-dialled
-dialler
-dialling
-dialog
-dialogue
-dialogues
-dials
-dialysis
-diamante
-diameter
-diameters
-diametric
-diametrically
-diamond
-diamonds
-diana
-diapason
-diaper
-diapers
-diaphanous
-diaphragm
-diaphragmatic
-diaphragms
-diaries
-diarist
-diarrhea
-diarrhoea
-diarrhoeal
-diary
-diaspora
-diastolic
-diathermy
-diatom
-diatomic
-diatoms
-diatonic
-diatribe
-diatribes
-dice
-diced
-dices
-dicey
-dichloride
-dichotomies
-dichotomous
-dichotomy
-diciest
-dicing
-dickens
-dictate
-dictated
-dictates
-dictating
-dictation
-dictator
-dictatorial
-dictatorially
-dictators
-dictatorship
-dictatorships
-diction
-dictionaries
-dictionary
-dictions
-dictum
-did
-didactic
-didnt
-die
-died
-diehard
-diehards
-dielectric
-dielectrics
-dies
-diesel
-dieselelectric
-diesels
-diet
-dietary
-dieted
-dieter
-dietetic
-dietician
-dieticians
-dieting
-dietitian
-dietitians
-diets
-differ
-differed
-difference
-differences
-differencing
-different
-differentiability
-differentiable
-differential
-differentially
-differentials
-differentiate
-differentiated
-differentiates
-differentiating
-differentiation
-differentiations
-differentiators
-differently
-differing
-differs
-difficult
-difficulties
-difficulty
-diffidence
-diffident
-diffidently
-diffract
-diffracted
-diffracting
-diffraction
-diffracts
-diffuse
-diffused
-diffuser
-diffusers
-diffuses
-diffusing
-diffusion
-diffusional
-diffusive
-diffusivity
-dig
-digest
-digested
-digester
-digestible
-digesting
-digestion
-digestions
-digestive
-digestives
-digests
-digger
-diggers
-digging
-diggings
-digit
-digital
-digitalis
-digitally
-digitisation
-digitise
-digitised
-digitiser
-digitisers
-digitising
-digits
-dignified
-dignify
-dignifying
-dignitaries
-dignitary
-dignities
-dignity
-digraphs
-digress
-digressed
-digressing
-digression
-digressions
-digs
-dihedral
-dikes
-diktat
-diktats
-dilapidated
-dilapidation
-dilatation
-dilate
-dilated
-dilates
-dilating
-dilation
-dilator
-dilatory
-dildo
-dilemma
-dilemmas
-dilettante
-dilettantes
-diligence
-diligent
-diligently
-dill
-dilly
-diluent
-dilute
-diluted
-diluter
-dilutes
-diluting
-dilution
-dilutions
-dim
-dime
-dimension
-dimensional
-dimensionality
-dimensionally
-dimensioned
-dimensioning
-dimensionless
-dimensions
-dimer
-dimers
-dimes
-diminish
-diminishable
-diminished
-diminishes
-diminishing
-diminuendo
-diminution
-diminutive
-diminutives
-dimly
-dimmed
-dimmer
-dimmers
-dimmest
-dimming
-dimness
-dimorphic
-dimorphism
-dimple
-dimpled
-dimples
-dims
-dimwit
-din
-dinar
-dinars
-dine
-dined
-diner
-diners
-dines
-ding
-dingdong
-dinged
-dinghies
-dinghy
-dingier
-dingiest
-dinginess
-dingle
-dingo
-dingy
-dining
-dinky
-dinner
-dinners
-dinosaur
-dinosaurs
-dint
-dints
-diocesan
-diocese
-diode
-diodes
-dioptre
-dioptres
-dioxide
-dioxides
-dioxin
-dioxins
-dip
-diphtheria
-diphthong
-diphthongs
-diplexers
-diploid
-diploma
-diplomacy
-diplomas
-diplomat
-diplomatic
-diplomatically
-diplomats
-dipolar
-dipole
-dipoles
-dipped
-dipper
-dipping
-dips
-dipsomania
-dipsomaniac
-dipsomaniacs
-dipstick
-dipsticks
-dire
-direct
-directed
-directing
-direction
-directional
-directionality
-directionally
-directionless
-directions
-directive
-directives
-directly
-directness
-director
-directorate
-directorates
-directorial
-directories
-directors
-directorship
-directorships
-directory
-directs
-direly
-direness
-direst
-dirge
-dirges
-dirigible
-dirigiste
-dirt
-dirtied
-dirtier
-dirties
-dirtiest
-dirtily
-dirtiness
-dirts
-dirty
-dirtying
-disabilities
-disability
-disable
-disabled
-disablement
-disables
-disabling
-disabuse
-disabused
-disadvantage
-disadvantaged
-disadvantageous
-disadvantageously
-disadvantages
-disaffected
-disaffection
-disaffiliate
-disaffiliated
-disaffiliating
-disaffiliation
-disaggregate
-disaggregated
-disaggregation
-disagree
-disagreeable
-disagreeably
-disagreed
-disagreeing
-disagreement
-disagreements
-disagrees
-disallow
-disallowed
-disallowing
-disallows
-disambiguate
-disambiguated
-disambiguating
-disambiguation
-disappear
-disappearance
-disappearances
-disappeared
-disappearing
-disappears
-disappoint
-disappointed
-disappointing
-disappointingly
-disappointment
-disappointments
-disappoints
-disapprobation
-disapproval
-disapprove
-disapproved
-disapproves
-disapproving
-disapprovingly
-disarm
-disarmament
-disarmed
-disarmer
-disarming
-disarmingly
-disarms
-disarranging
-disarray
-disarrayed
-disassemble
-disassembled
-disassembler
-disassembles
-disassembling
-disassembly
-disassociate
-disassociated
-disassociating
-disassociation
-disaster
-disasters
-disastrous
-disastrously
-disavow
-disavowal
-disavowed
-disavowing
-disband
-disbanded
-disbanding
-disbandment
-disbands
-disbars
-disbelief
-disbelieve
-disbelieved
-disbeliever
-disbelievers
-disbelieving
-disbelievingly
-disburse
-disbursed
-disbursement
-disbursements
-disc
-discant
-discard
-discarded
-discarding
-discards
-discern
-discerned
-discernible
-discernibly
-discerning
-discernment
-discerns
-discharge
-discharged
-discharges
-discharging
-disciple
-disciples
-discipleship
-disciplinarian
-disciplinarians
-disciplinary
-discipline
-disciplined
-disciplines
-disciplining
-disclaim
-disclaimed
-disclaimer
-disclaimers
-disclaiming
-disclaims
-disclose
-disclosed
-discloses
-disclosing
-disclosure
-disclosures
-disco
-discography
-discolour
-discolouration
-discoloured
-discolours
-discomfit
-discomfited
-discomfiture
-discomfort
-discomforting
-discomforts
-disconcert
-disconcerted
-disconcerting
-disconcertingly
-disconnect
-disconnected
-disconnecting
-disconnection
-disconnections
-disconnects
-disconsolate
-disconsolately
-disconsolation
-discontent
-discontented
-discontentedly
-discontents
-discontinuance
-discontinuation
-discontinue
-discontinued
-discontinues
-discontinuing
-discontinuities
-discontinuity
-discontinuous
-discontinuously
-discord
-discordance
-discordant
-discords
-discotheque
-discotheques
-discount
-discountability
-discountable
-discounted
-discounting
-discounts
-discourage
-discouraged
-discouragement
-discouragements
-discourages
-discouraging
-discouragingly
-discourse
-discoursed
-discourses
-discoursing
-discourteous
-discourteously
-discourtesy
-discover
-discoverable
-discovered
-discoverer
-discoverers
-discoveries
-discovering
-discovers
-discovery
-discredit
-discreditable
-discredited
-discrediting
-discredits
-discreet
-discreetly
-discreetness
-discrepancies
-discrepancy
-discrepant
-discrete
-discretely
-discretion
-discretionary
-discriminant
-discriminants
-discriminate
-discriminated
-discriminates
-discriminating
-discrimination
-discriminative
-discriminator
-discriminators
-discriminatory
-discs
-discursive
-discursively
-discus
-discuss
-discussable
-discussed
-discusses
-discussing
-discussion
-discussions
-disdain
-disdained
-disdainful
-disdainfully
-disdaining
-disease
-diseased
-diseases
-disembark
-disembarkation
-disembarked
-disembarking
-disembodied
-disembodiment
-disembowel
-disembowelled
-disembowelment
-disembowels
-disenchanted
-disenchantment
-disenfranchise
-disenfranchised
-disenfranchisement
-disenfranchises
-disenfranchising
-disengage
-disengaged
-disengagement
-disengaging
-disentangle
-disentangled
-disentangles
-disentangling
-disequilibrium
-disestablish
-disestablished
-disestablishing
-disestablishment
-disfavour
-disfigure
-disfigured
-disfigurement
-disfigurements
-disfigures
-disfiguring
-disfranchise
-disgorge
-disgorged
-disgorging
-disgrace
-disgraced
-disgraceful
-disgracefully
-disgraces
-disgracing
-disgruntled
-disgruntlement
-disguise
-disguised
-disguises
-disguising
-disgust
-disgusted
-disgustedly
-disgusting
-disgustingly
-disgusts
-dish
-disharmonious
-disharmony
-dishcloth
-disheartened
-disheartening
-dished
-dishes
-dishevelled
-dishier
-dishing
-dishonest
-dishonestly
-dishonesty
-dishonour
-dishonourable
-dishonourably
-dishonoured
-dishpan
-dishwasher
-dishwashers
-dishwater
-dishy
-disillusion
-disillusioned
-disillusioning
-disillusionment
-disincentive
-disincentives
-disinclination
-disinclined
-disinfect
-disinfectant
-disinfectants
-disinfected
-disinfecting
-disinfection
-disinformation
-disingenuous
-disingenuously
-disinherit
-disinherited
-disintegrate
-disintegrated
-disintegrates
-disintegrating
-disintegration
-disinter
-disinterest
-disinterested
-disinterestedly
-disinterestedness
-disinterred
-disinvest
-disinvestment
-disjoin
-disjoint
-disjointed
-disjointedly
-disjointness
-disjunct
-disjunction
-disjunctions
-disjunctive
-diskette
-diskettes
-dislike
-disliked
-dislikes
-disliking
-dislocate
-dislocated
-dislocates
-dislocating
-dislocation
-dislocations
-dislodge
-dislodged
-dislodges
-dislodging
-disloyal
-disloyalty
-dismal
-dismally
-dismantle
-dismantled
-dismantles
-dismantling
-dismay
-dismayed
-dismaying
-dismays
-dismember
-dismembered
-dismembering
-dismemberment
-dismembers
-dismiss
-dismissal
-dismissals
-dismissed
-dismisses
-dismissible
-dismissing
-dismissive
-dismissively
-dismount
-dismounted
-dismounting
-dismounts
-disobedience
-disobedient
-disobey
-disobeyed
-disobeying
-disobeys
-disorder
-disordered
-disorderly
-disorders
-disorganisation
-disorganise
-disorganised
-disorganising
-disorient
-disorientated
-disorientating
-disorientation
-disoriented
-disown
-disowned
-disowning
-disowns
-disparage
-disparaged
-disparagement
-disparaging
-disparagingly
-disparate
-disparities
-disparity
-dispassionate
-dispassionately
-dispatch
-dispatched
-dispatcher
-dispatchers
-dispatches
-dispatching
-dispel
-dispelled
-dispelling
-dispels
-dispensable
-dispensaries
-dispensary
-dispensation
-dispensations
-dispense
-dispensed
-dispenser
-dispensers
-dispenses
-dispensing
-dispersal
-dispersant
-disperse
-dispersed
-disperser
-dispersers
-disperses
-dispersing
-dispersion
-dispersions
-dispersive
-dispersively
-dispirited
-dispiritedly
-dispiriting
-displace
-displaced
-displacement
-displacements
-displacer
-displaces
-displacing
-display
-displayable
-displayed
-displaying
-displays
-displease
-displeased
-displeasing
-displeasure
-disporting
-disposable
-disposables
-disposal
-disposals
-dispose
-disposed
-disposer
-disposers
-disposes
-disposing
-disposition
-dispositions
-dispossess
-dispossessed
-dispossession
-disproof
-disproofs
-disproportional
-disproportionally
-disproportionate
-disproportionately
-disprovable
-disprove
-disproved
-disproves
-disproving
-disputable
-disputant
-disputants
-disputation
-disputatious
-dispute
-disputed
-disputes
-disputing
-disqualification
-disqualifications
-disqualified
-disqualifies
-disqualify
-disqualifying
-disquiet
-disquieting
-disquietude
-disquisition
-disquisitions
-disregard
-disregarded
-disregarding
-disregards
-disrepair
-disreputable
-disrepute
-disrespect
-disrespectful
-disrespectfully
-disrespects
-disrobe
-disrobing
-disrupt
-disrupted
-disrupting
-disruption
-disruptions
-disruptive
-disruptively
-disruptor
-disrupts
-dissatisfaction
-dissatisfactions
-dissatisfied
-dissatisfies
-dissatisfy
-dissatisfying
-dissect
-dissected
-dissecting
-dissection
-dissections
-dissector
-dissects
-dissemble
-dissembled
-dissembling
-disseminate
-disseminated
-disseminating
-dissemination
-dissension
-dissensions
-dissent
-dissented
-dissenter
-dissenters
-dissenting
-dissertation
-dissertations
-disservice
-dissidence
-dissident
-dissidents
-dissimilar
-dissimilarities
-dissimilarity
-dissimulation
-dissipate
-dissipated
-dissipates
-dissipating
-dissipation
-dissipative
-dissociate
-dissociated
-dissociating
-dissociation
-dissociative
-dissociatively
-dissolute
-dissolution
-dissolve
-dissolved
-dissolves
-dissolving
-dissonance
-dissonances
-dissonant
-dissuade
-dissuaded
-dissuades
-dissuading
-distaff
-distal
-distally
-distance
-distanced
-distances
-distancing
-distant
-distantly
-distaste
-distasteful
-distastefully
-distemper
-distempered
-distempers
-distended
-distension
-distil
-distillate
-distillation
-distillations
-distilled
-distiller
-distilleries
-distillers
-distillery
-distilling
-distils
-distinct
-distinction
-distinctions
-distinctive
-distinctively
-distinctiveness
-distinctly
-distinctness
-distinguish
-distinguishable
-distinguishably
-distinguished
-distinguishes
-distinguishing
-distort
-distorted
-distorter
-distorting
-distortion
-distortions
-distorts
-distract
-distracted
-distractedly
-distractedness
-distracting
-distractingly
-distraction
-distractions
-distracts
-distraught
-distress
-distressed
-distresses
-distressing
-distressingly
-distributable
-distribute
-distributed
-distributes
-distributing
-distribution
-distributional
-distributions
-distributive
-distributivity
-distributor
-distributors
-district
-districts
-distrust
-distrusted
-distrustful
-distrustfully
-distrusting
-distrusts
-disturb
-disturbance
-disturbances
-disturbed
-disturbing
-disturbingly
-disturbs
-disulphide
-disunion
-disunite
-disunity
-disuse
-disused
-disyllabic
-disyllable
-ditch
-ditched
-ditches
-ditching
-dither
-dithered
-dithering
-dithers
-ditties
-ditto
-ditty
-diuresis
-diuretic
-diuretics
-diurnal
-diva
-divan
-divans
-divas
-dive
-divebombing
-dived
-diver
-diverge
-diverged
-divergence
-divergences
-divergent
-diverges
-diverging
-divers
-diverse
-diversely
-diversification
-diversified
-diversifies
-diversify
-diversifying
-diversion
-diversionary
-diversions
-diversities
-diversity
-divert
-diverted
-diverticular
-diverting
-diverts
-dives
-divest
-divested
-divesting
-divide
-divided
-dividend
-dividends
-divider
-dividers
-divides
-dividing
-divination
-divine
-divined
-divinely
-diviner
-divines
-divinest
-diving
-divining
-divinities
-divinity
-divisibility
-divisible
-division
-divisional
-divisions
-divisive
-divisiveness
-divisor
-divisors
-divorce
-divorced
-divorcee
-divorcees
-divorces
-divorcing
-divot
-divots
-divulge
-divulged
-divulges
-divulging
-dizzier
-dizziest
-dizzily
-dizziness
-dizzy
-dizzying
-dizzyingly
-do
-doberman
-doc
-docile
-docilely
-docility
-dock
-dockage
-docked
-docker
-dockers
-docket
-dockets
-docking
-dockland
-docklands
-docks
-dockside
-dockyard
-dockyards
-docs
-doctor
-doctoral
-doctorate
-doctorates
-doctored
-doctoring
-doctors
-doctrinaire
-doctrinal
-doctrinally
-doctrine
-doctrines
-document
-documentaries
-documentary
-documentation
-documented
-documenting
-documents
-dodecahedra
-dodecahedral
-dodecahedron
-dodge
-dodged
-dodgem
-dodgems
-dodger
-dodgers
-dodges
-dodgier
-dodging
-dodgy
-dodo
-doe
-doer
-doers
-does
-doesnt
-doffed
-doffing
-dog
-dogdays
-doge
-dogeared
-doges
-dogfight
-dogfights
-dogfish
-dogged
-doggedly
-doggedness
-doggerel
-dogging
-doggy
-doglike
-dogma
-dogmas
-dogmatic
-dogmatically
-dogmatism
-dogmatist
-dogmatists
-dogood
-dogooder
-dogooders
-dogs
-dogsbody
-dogtag
-dogy
-doh
-dohs
-doily
-doing
-doings
-doityourself
-doldrums
-dole
-doled
-doleful
-dolefully
-dolerite
-doles
-doling
-doll
-dollar
-dollars
-dolled
-dollies
-dollop
-dolls
-dolly
-dolman
-dolmen
-dolomite
-dolorous
-dolphin
-dolphinarium
-dolphins
-dolt
-domain
-domains
-dome
-domed
-domes
-domestic
-domestically
-domesticated
-domestication
-domesticity
-domestics
-domicile
-domiciled
-domiciliary
-dominance
-dominant
-dominantly
-dominate
-dominated
-dominates
-dominating
-domination
-domineer
-domineered
-domineering
-dominion
-dominions
-domino
-don
-donate
-donated
-donates
-donating
-donation
-donations
-done
-dong
-donga
-donjuan
-donkey
-donkeys
-donned
-donning
-donor
-donors
-dons
-dont
-donut
-doodle
-doodled
-doodles
-doodling
-doom
-doomed
-dooming
-dooms
-doomsday
-door
-doorbell
-doorbells
-doorhandles
-doorkeeper
-doorkeepers
-doorknob
-doorknobs
-doorman
-doormat
-doormats
-doormen
-doornail
-doorpost
-doors
-doorstep
-doorsteps
-doorstop
-doorstops
-doorway
-doorways
-dopamine
-dope
-doped
-dopes
-dopey
-dopier
-doping
-dopy
-dor
-dorado
-dormancy
-dormant
-dormer
-dormers
-dormice
-dormitories
-dormitory
-dormouse
-dorsal
-dorsally
-dosage
-dosages
-dose
-dosed
-doses
-dosing
-dossier
-dossiers
-dot
-dotage
-dote
-doted
-dotes
-doting
-dots
-dotted
-dottiness
-dotting
-dotty
-double
-doublebarrelled
-doublecross
-doublecrossing
-doubled
-doubledealing
-doubledecker
-doubledeckers
-doubles
-doublet
-doubletalk
-doublets
-doubling
-doubly
-doubt
-doubted
-doubter
-doubters
-doubtful
-doubtfully
-doubting
-doubtingly
-doubtless
-doubtlessly
-doubts
-douche
-douching
-dough
-doughnut
-doughnuts
-doughs
-doughty
-dour
-dourly
-dourness
-douse
-doused
-dousing
-dove
-dovecot
-dovecote
-dover
-doves
-dovetail
-dovetails
-dowager
-dowagers
-dowdier
-dowdiest
-dowdy
-dowel
-dowelling
-dowels
-down
-downbeat
-downcast
-downed
-downfall
-downgrade
-downgraded
-downgrades
-downgrading
-downhearted
-downhill
-downing
-downland
-downlands
-download
-downloaded
-downloading
-downloads
-downpipe
-downpipes
-downplay
-downplayed
-downpour
-downpours
-downright
-downs
-downside
-downsize
-downsized
-downsizing
-downstage
-downstairs
-downstream
-downswing
-downtoearth
-downtrodden
-downturn
-downturns
-downward
-downwardly
-downwards
-downwind
-downy
-dowries
-dowry
-dowse
-dowser
-dowsers
-dowsing
-doyen
-doyenne
-doyens
-doze
-dozed
-dozen
-dozens
-dozes
-dozier
-dozing
-dozy
-dr
-drab
-drabness
-drachm
-drachma
-drachmas
-dracone
-draconian
-dracula
-draft
-drafted
-draftee
-draftees
-drafter
-drafters
-draftier
-drafting
-drafts
-draftsman
-drafty
-drag
-dragged
-dragging
-dragnet
-dragon
-dragonflies
-dragonfly
-dragons
-dragoon
-dragooned
-dragoons
-drags
-drain
-drainage
-drained
-drainer
-draining
-drainpipe
-drainpipes
-drains
-drake
-drakes
-dram
-drama
-dramas
-dramatic
-dramatically
-dramatics
-dramatisation
-dramatisations
-dramatise
-dramatised
-dramatising
-dramatist
-dramatists
-dramaturgical
-drank
-drape
-draped
-draper
-draperies
-drapers
-drapery
-drapes
-draping
-drastic
-drastically
-drat
-draught
-draughtier
-draughtiest
-draughts
-draughtsman
-draughtsmanship
-draughtsmen
-draughty
-draw
-drawable
-drawback
-drawbacks
-drawbridge
-drawbridges
-drawcord
-drawees
-drawer
-drawers
-drawing
-drawings
-drawl
-drawled
-drawling
-drawls
-drawn
-draws
-dray
-drays
-dread
-dreaded
-dreadful
-dreadfully
-dreadfulness
-dreading
-dreadlocks
-dreadnought
-dreads
-dream
-dreamed
-dreamer
-dreamers
-dreamier
-dreamiest
-dreamily
-dreaming
-dreamland
-dreamless
-dreamlike
-dreams
-dreamt
-dreamy
-drear
-drearier
-dreariest
-drearily
-dreariness
-dreary
-dredge
-dredged
-dredger
-dredges
-dredging
-dregs
-drench
-drenched
-drenches
-drenching
-dress
-dressage
-dressed
-dresser
-dressers
-dresses
-dressing
-dressings
-dressmaker
-dressmakers
-dressmaking
-dressy
-drew
-dribble
-dribbled
-dribbler
-dribbles
-dribbling
-dried
-drier
-driers
-dries
-driest
-drift
-drifted
-drifter
-drifters
-drifting
-drifts
-driftwood
-drill
-drilled
-driller
-drilling
-drills
-drily
-drink
-drinkable
-drinker
-drinkers
-drinking
-drinks
-drip
-dripdry
-dripped
-dripping
-drippy
-drips
-drivable
-drive
-drive
-drivein
-driveins
-drivel
-drivelled
-drivelling
-drivels
-driven
-driver
-driverless
-drivers
-drives
-driveway
-driveways
-driving
-drizzle
-drizzled
-drizzles
-drizzling
-drizzly
-droll
-droller
-drollery
-drollest
-dromedaries
-dromedary
-drone
-droned
-drones
-droning
-drool
-drooled
-drooling
-drools
-droop
-drooped
-droopier
-droopiest
-drooping
-droopingly
-droops
-droopy
-drop
-droplet
-droplets
-dropout
-dropouts
-dropped
-dropper
-dropping
-droppings
-drops
-dropsy
-dross
-drought
-droughts
-drove
-drover
-drovers
-droves
-droving
-drown
-drowned
-drowning
-drownings
-drowns
-drowse
-drowsed
-drowses
-drowsier
-drowsiest
-drowsily
-drowsiness
-drowsy
-drub
-drubbed
-drubbing
-drudge
-drudgery
-drudges
-drug
-drugged
-drugging
-druggist
-drugs
-druid
-druids
-drum
-drumbeat
-drumbeats
-drummed
-drummer
-drummers
-drumming
-drums
-drumsticks
-drunk
-drunkard
-drunkards
-drunken
-drunkenly
-drunkenness
-drunker
-drunks
-dry
-drycleaned
-drycleaning
-dryer
-dryers
-dryeyed
-drying
-dryish
-dryly
-dryness
-drystone
-dual
-dualism
-dualisms
-dualist
-dualistic
-dualities
-duality
-dually
-duals
-dub
-dubbed
-dubbing
-dubious
-dubiously
-dubiousness
-dublin
-dubs
-duce
-duchess
-duchesses
-duchies
-duchy
-duck
-duckbill
-duckbilled
-duckboards
-ducked
-ducking
-duckings
-duckling
-ducklings
-duckpond
-ducks
-duct
-ducted
-ductile
-ducting
-ducts
-dud
-dude
-dudes
-dudgeon
-duds
-due
-duel
-duelled
-dueller
-duellers
-duelling
-duellist
-duels
-dues
-duet
-duets
-duff
-duffel
-dug
-dugout
-dugouts
-duiker
-duke
-dukedom
-dukedoms
-dukes
-dulcet
-dulcimer
-dull
-dullard
-dullards
-dulled
-duller
-dullest
-dulling
-dullness
-dulls
-dully
-dulness
-duly
-dumb
-dumbbell
-dumber
-dumbest
-dumbfound
-dumbfounded
-dumbfounding
-dumbfounds
-dumbly
-dumbness
-dumbstruck
-dumfound
-dumfounded
-dumfounding
-dumfounds
-dummied
-dummies
-dummy
-dump
-dumped
-dumper
-dumping
-dumpling
-dumplings
-dumps
-dumpy
-dun
-dunce
-dunces
-dune
-dunes
-dung
-dungarees
-dungbeetle
-dungeon
-dungeons
-dunghill
-dunked
-dunking
-dunkirk
-duo
-duodenal
-duodenum
-duologue
-duomo
-duopoly
-dupe
-duped
-dupes
-duplex
-duplicability
-duplicate
-duplicated
-duplicates
-duplicating
-duplication
-duplications
-duplicator
-duplicators
-duplicities
-duplicitous
-duplicity
-durability
-durable
-durables
-durance
-duration
-durations
-durban
-duress
-during
-dusk
-duskier
-dusky
-dust
-dustbin
-dustbins
-dustcart
-dusted
-duster
-dusters
-dustier
-dustily
-dusting
-dustman
-dustmen
-dustpan
-dusts
-dusty
-dutch
-dutchman
-dutchmen
-duties
-dutiful
-dutifully
-dutifulness
-duty
-dutyfree
-duvet
-duvets
-dux
-dwarf
-dwarfed
-dwarfing
-dwarfish
-dwarfs
-dwarves
-dwell
-dwelled
-dweller
-dwellers
-dwelling
-dwellings
-dwells
-dwelt
-dwindle
-dwindled
-dwindles
-dwindling
-dyad
-dyadic
-dye
-dyed
-dyeing
-dyeings
-dyer
-dyers
-dyes
-dyestuff
-dyestuffs
-dying
-dyke
-dykes
-dynamic
-dynamical
-dynamically
-dynamics
-dynamism
-dynamite
-dynamited
-dynamo
-dynast
-dynastic
-dynasties
-dynasts
-dynasty
-dyne
-dysentery
-dysfunction
-dysfunctional
-dysfunctions
-dyslexia
-dyslexic
-dyslexically
-dyslexics
-dyspepsia
-dyspeptic
-dystrophy
-each
-eager
-eagerly
-eagerness
-eagle
-eagles
-eaglet
-eaglets
-ear
-earache
-earaches
-eardrop
-eardrops
-eardrum
-eardrums
-eared
-earful
-earholes
-earl
-earldom
-earldoms
-earlier
-earliest
-earlobe
-earlobes
-earls
-early
-earmark
-earmarked
-earmarking
-earn
-earned
-earner
-earners
-earnest
-earnestly
-earnestness
-earning
-earnings
-earns
-earphone
-earphones
-earpiece
-earpieces
-earplug
-earplugs
-earring
-earrings
-ears
-earshot
-earsplitting
-earth
-earthbound
-earthed
-earthen
-earthenware
-earthiness
-earthing
-earthling
-earthlings
-earthly
-earthquake
-earthquakes
-earths
-earthshaking
-earthshattering
-earthwards
-earthwork
-earthworks
-earthworm
-earthworms
-earthy
-earwax
-earwig
-earwigs
-ease
-eased
-easel
-easels
-easement
-easements
-eases
-easier
-easiest
-easily
-easiness
-easing
-east
-eastbound
-easter
-easterly
-eastern
-easterners
-easternmost
-easting
-eastward
-eastwards
-easy
-easygoing
-eat
-eatable
-eatage
-eaten
-eater
-eaters
-eatery
-eating
-eatings
-eats
-eaves
-eavesdrop
-eavesdropped
-eavesdropper
-eavesdroppers
-eavesdropping
-eavesdrops
-ebb
-ebbed
-ebbing
-ebbs
-ebbtide
-ebony
-ebullience
-ebullient
-eccentric
-eccentrically
-eccentricities
-eccentricity
-eccentrics
-ecclesiastic
-ecclesiastical
-ecclesiastically
-echelon
-echelons
-echidna
-echidnas
-echinoderm
-echinoderms
-echo
-echoed
-echoic
-echoing
-eclair
-eclairs
-eclectic
-eclecticism
-eclipse
-eclipsed
-eclipses
-eclipsing
-ecliptic
-ecological
-ecologically
-ecologist
-ecologists
-ecology
-econometric
-econometrics
-economic
-economical
-economically
-economics
-economies
-economisation
-economise
-economised
-economises
-economising
-economist
-economists
-economy
-ecosystem
-ecosystems
-ecstasies
-ecstasy
-ecstatic
-ecstatically
-ectopic
-ectoplasm
-ecuador
-ecumenical
-ecumenically
-ecumenism
-eczema
-eddied
-eddies
-eddy
-eddying
-edema
-eden
-edge
-edged
-edgeless
-edges
-edgeways
-edgewise
-edgier
-edgily
-edginess
-edging
-edgings
-edgy
-edibility
-edible
-edibles
-edict
-edicts
-edification
-edifice
-edifices
-edified
-edifies
-edify
-edifying
-edison
-edit
-editable
-edited
-editing
-edition
-editions
-editor
-editorial
-editorialised
-editorially
-editorials
-editors
-editorship
-editorships
-edits
-educate
-educated
-educates
-educating
-education
-educational
-educationalist
-educationalists
-educationally
-educationist
-educationists
-educations
-educative
-educator
-educators
-eduction
-eel
-eels
-eelworm
-eelworms
-eerie
-eerier
-eeriest
-eerily
-eeriness
-eery
-efface
-effaced
-effacing
-effect
-effected
-effecting
-effective
-effectively
-effectiveness
-effector
-effectors
-effects
-effectual
-effectually
-effeminacy
-effeminate
-efferent
-effervescence
-effervescent
-effete
-efficacious
-efficacy
-efficiencies
-efficiency
-efficient
-efficiently
-effigies
-effigy
-effluent
-effluents
-effluvia
-effluxion
-effort
-effortless
-effortlessly
-efforts
-effrontery
-effulgence
-effulgent
-effusion
-effusions
-effusive
-effusively
-eg
-egalitarian
-egalitarianism
-egalitarians
-egg
-egged
-eggheads
-egging
-eggs
-eggshell
-eggshells
-ego
-egocentric
-egocentricity
-egoism
-egoist
-egoistic
-egoists
-egomania
-egomaniac
-egomaniacs
-egotism
-egotist
-egotistic
-egotistical
-egotistically
-egotists
-egregious
-egress
-egret
-egrets
-egypt
-egyptian
-eh
-eider
-eiderdown
-eidetic
-eigenfunction
-eigenfunctions
-eigenstate
-eigenstates
-eigenvalue
-eigenvalues
-eight
-eighteen
-eighteenth
-eightfold
-eighth
-eighties
-eightieth
-eightpence
-eights
-eighty
-einstein
-eire
-eisteddfod
-either
-eject
-ejected
-ejecting
-ejection
-ejections
-ejector
-ejectors
-ejects
-eke
-eked
-eking
-elaborate
-elaborated
-elaborately
-elaborateness
-elaborates
-elaborating
-elaboration
-elaborations
-elal
-elan
-eland
-elands
-elapse
-elapsed
-elapses
-elapsing
-elastic
-elastically
-elasticated
-elasticities
-elasticity
-elastics
-elastin
-elastodynamics
-elate
-elated
-elates
-elation
-elbe
-elbow
-elbowed
-elbowing
-elbows
-elder
-elderberries
-elderberry
-elderflower
-elderly
-elders
-eldest
-eldorado
-elect
-electability
-electable
-elected
-electing
-election
-electioneering
-elections
-elective
-elector
-electoral
-electorally
-electorate
-electorates
-electors
-electric
-electrical
-electrically
-electrician
-electricians
-electricity
-electrics
-electrification
-electrified
-electrify
-electrifying
-electro
-electrocardiogram
-electrocardiographic
-electrochemical
-electrochemically
-electrocute
-electrocuted
-electrocutes
-electrocuting
-electrocution
-electrode
-electrodes
-electrodynamic
-electrodynamics
-electroencephalogram
-electroluminescent
-electrolyse
-electrolysed
-electrolysing
-electrolysis
-electrolyte
-electrolytes
-electrolytic
-electrolytically
-electromagnet
-electromagnetic
-electromagnetically
-electromagnetism
-electromechanical
-electromechanics
-electromotive
-electron
-electronegative
-electronic
-electronically
-electronics
-electrons
-electrophoresis
-electrostatic
-electrostatics
-electrotechnical
-elects
-elegance
-elegant
-elegantly
-elegiac
-elegies
-elegy
-element
-elemental
-elementally
-elementarily
-elementary
-elements
-elephant
-elephantiasis
-elephantine
-elephants
-elevate
-elevated
-elevates
-elevating
-elevation
-elevations
-elevator
-elevators
-eleven
-eleventh
-elf
-elfin
-elflike
-elgreco
-elicit
-elicitation
-elicited
-eliciting
-elicits
-elide
-elided
-elides
-eliding
-eligibility
-eligible
-eligibly
-elijah
-eliminate
-eliminated
-eliminates
-eliminating
-elimination
-eliminations
-eliminator
-elision
-elisions
-elite
-elites
-elitism
-elitist
-elitists
-elixir
-elixirs
-elk
-elks
-ell
-ellipse
-ellipses
-ellipsis
-ellipsoid
-ellipsoidal
-ellipsoids
-elliptic
-elliptical
-elliptically
-ells
-elm
-elms
-elnino
-elocution
-elongate
-elongated
-elongates
-elongating
-elongation
-elongations
-elope
-eloped
-elopement
-elopes
-eloping
-eloquence
-eloquent
-eloquently
-els
-else
-elsewhere
-elucidate
-elucidated
-elucidates
-elucidating
-elucidation
-elude
-eluded
-eludes
-eluding
-elusion
-elusions
-elusive
-elusively
-elusiveness
-eluted
-elution
-elven
-elves
-elvish
-elysee
-em
-emaciate
-emaciated
-emaciation
-email
-emailed
-emanate
-emanated
-emanates
-emanating
-emanation
-emanations
-emancipate
-emancipated
-emancipates
-emancipating
-emancipation
-emancipator
-emancipatory
-emasculate
-emasculated
-emasculating
-emasculation
-embalm
-embalmed
-embalmer
-embalmers
-embalming
-embalms
-embank
-embankment
-embankments
-embargo
-embargoed
-embark
-embarkation
-embarked
-embarking
-embarks
-embarrass
-embarrassed
-embarrassedly
-embarrasses
-embarrassing
-embarrassingly
-embarrassment
-embarrassments
-embassies
-embassy
-embattle
-embattled
-embed
-embeddable
-embedded
-embedding
-embeddings
-embeds
-embellish
-embellished
-embellishing
-embellishment
-embellishments
-ember
-embers
-embezzle
-embezzled
-embezzlement
-embezzler
-embezzlers
-embezzling
-embitter
-embittered
-embittering
-embitterment
-emblazoned
-emblem
-emblematic
-emblems
-embodied
-embodies
-embodiment
-embodiments
-embody
-embodying
-embolden
-emboldened
-emboldening
-emboldens
-embolism
-embosom
-emboss
-embossed
-embrace
-embraced
-embraces
-embracing
-embrasure
-embrocation
-embroider
-embroidered
-embroiderers
-embroideries
-embroidering
-embroidery
-embroil
-embroiled
-embroiling
-embryo
-embryological
-embryology
-embryonal
-embryonic
-emendation
-emendations
-emended
-emerald
-emeralds
-emerge
-emerged
-emergence
-emergencies
-emergency
-emergent
-emerges
-emerging
-emeritus
-emersion
-emery
-emetic
-emigrant
-emigrants
-emigrate
-emigrated
-emigrating
-emigration
-emigre
-emigres
-eminence
-eminences
-eminent
-eminently
-emir
-emirate
-emirates
-emirs
-emissaries
-emissary
-emission
-emissions
-emissivities
-emissivity
-emit
-emits
-emitted
-emitter
-emitters
-emitting
-emollient
-emolument
-emoluments
-emotion
-emotional
-emotionalism
-emotionality
-emotionally
-emotionless
-emotions
-emotive
-emotively
-empathetic
-empathetical
-empathic
-empathise
-empathising
-empathy
-emperor
-emperors
-emphases
-emphasis
-emphasise
-emphasised
-emphasises
-emphasising
-emphatic
-emphatically
-emphysema
-empire
-empires
-empiric
-empirical
-empirically
-empiricism
-empiricist
-empiricists
-emplacement
-emplacements
-employ
-employability
-employable
-employed
-employee
-employees
-employer
-employers
-employing
-employment
-employments
-employs
-emporia
-emporium
-empower
-empowered
-empowering
-empowerment
-empowers
-empress
-emptied
-emptier
-empties
-emptiest
-emptily
-emptiness
-empty
-emptyhanded
-emptying
-ems
-emu
-emulate
-emulated
-emulates
-emulating
-emulation
-emulations
-emulator
-emulators
-emulsifies
-emulsion
-emulsions
-emus
-enable
-enabled
-enables
-enabling
-enact
-enacted
-enacting
-enactment
-enactments
-enacts
-enamel
-enamelled
-enamels
-enamoured
-encage
-encamp
-encamped
-encampment
-encampments
-encapsulate
-encapsulated
-encapsulates
-encapsulating
-encapsulation
-encapsulations
-encase
-encased
-encases
-encashment
-encasing
-encephalitis
-encephalopathy
-enchain
-enchant
-enchanted
-enchanter
-enchanters
-enchanting
-enchantingly
-enchantment
-enchantments
-enchantress
-enchants
-enchiladas
-enciphering
-encircle
-encircled
-encirclement
-encirclements
-encircles
-encircling
-enclasp
-enclave
-enclaves
-enclose
-enclosed
-encloses
-enclosing
-enclosure
-enclosures
-encode
-encoded
-encoder
-encoders
-encodes
-encoding
-encomium
-encompass
-encompassed
-encompasses
-encompassing
-encore
-encored
-encores
-encounter
-encountered
-encountering
-encounters
-encourage
-encouraged
-encouragement
-encouragements
-encourager
-encourages
-encouraging
-encouragingly
-encroach
-encroached
-encroaches
-encroaching
-encroachment
-encroachments
-encrust
-encrustation
-encrusted
-encrusting
-encrypt
-encrypted
-encrypting
-encryption
-encrypts
-encumber
-encumbered
-encumbering
-encumbrance
-encumbrances
-encyclical
-encyclopaedia
-encyclopaedias
-encyclopaedic
-encyclopedia
-encyclopedias
-encyclopedic
-end
-endanger
-endangered
-endangering
-endangers
-endear
-endeared
-endearing
-endearingly
-endearment
-endearments
-endears
-endeavour
-endeavoured
-endeavouring
-endeavours
-ended
-endemic
-endemically
-endgame
-ending
-endings
-endive
-endless
-endlessly
-endlessness
-endocrine
-endogenous
-endogenously
-endometrial
-endometriosis
-endometrium
-endomorphism
-endomorphisms
-endoplasmic
-endorphins
-endorse
-endorsed
-endorsement
-endorsements
-endorser
-endorses
-endorsing
-endoscope
-endoscopic
-endoscopy
-endothermic
-endotoxin
-endow
-endowed
-endowing
-endowment
-endowments
-endows
-endpapers
-ends
-endued
-endues
-endungeoned
-endurable
-endurance
-endure
-endured
-endures
-enduring
-enema
-enemas
-enemies
-enemy
-energetic
-energetically
-energetics
-energies
-energise
-energised
-energiser
-energisers
-energising
-energy
-enervate
-enervated
-enervating
-enfeeble
-enfeebled
-enfeeblement
-enfold
-enfolded
-enfolding
-enfolds
-enforce
-enforceability
-enforceable
-enforced
-enforcement
-enforcements
-enforcer
-enforcers
-enforces
-enforcing
-enfranchise
-enfranchised
-enfranchisement
-enfranchiser
-enfranchising
-engage
-engaged
-engagement
-engagements
-engages
-engaging
-engagingly
-engarde
-engels
-engender
-engendered
-engendering
-engenders
-engine
-engined
-engineer
-engineered
-engineering
-engineers
-engines
-england
-english
-engorge
-engorged
-engrained
-engrave
-engraved
-engraver
-engravers
-engraves
-engraving
-engravings
-engross
-engrossed
-engrossing
-engulf
-engulfed
-engulfing
-engulfs
-enhance
-enhanceable
-enhanced
-enhancement
-enhancements
-enhancer
-enhancers
-enhances
-enhancing
-enharmonic
-enigma
-enigmas
-enigmatic
-enigmatically
-enjoin
-enjoined
-enjoining
-enjoins
-enjoy
-enjoyability
-enjoyable
-enjoyably
-enjoyed
-enjoyer
-enjoying
-enjoyment
-enjoyments
-enjoys
-enlace
-enlarge
-enlarged
-enlargement
-enlargements
-enlarger
-enlarges
-enlarging
-enlighten
-enlightened
-enlightening
-enlightenment
-enlightens
-enlist
-enlisted
-enlisting
-enlistment
-enlists
-enliven
-enlivened
-enlivening
-enlivens
-enmasse
-enmeshed
-enmities
-enmity
-enneads
-ennoble
-ennobled
-ennobles
-ennobling
-ennui
-enormities
-enormity
-enormous
-enormously
-enough
-enounced
-enounces
-enquire
-enquired
-enquirer
-enquirers
-enquires
-enquiries
-enquiring
-enquiringly
-enquiry
-enrage
-enraged
-enrages
-enraging
-enraptured
-enrich
-enriched
-enriches
-enriching
-enrichment
-enrichments
-enrobe
-enrobed
-enrol
-enroll
-enrolled
-enrolling
-enrolls
-enrolment
-enrolments
-enrols
-enroute
-ensconce
-ensconced
-ensemble
-ensembles
-enshrine
-enshrined
-enshrines
-enshrining
-enshroud
-enshrouded
-ensign
-ensigns
-enslave
-enslaved
-enslavement
-enslaves
-enslaving
-ensnare
-ensnared
-ensnaring
-ensnarl
-ensue
-ensued
-ensues
-ensuing
-ensure
-ensured
-ensures
-ensuring
-entablature
-entail
-entailed
-entailing
-entailment
-entails
-entangle
-entangled
-entanglement
-entanglements
-entangler
-entangles
-entangling
-entente
-enter
-entered
-entering
-enteritis
-enterprise
-enterprises
-enterprising
-enters
-entertain
-entertained
-entertainer
-entertainers
-entertaining
-entertainingly
-entertainment
-entertainments
-entertains
-enthalpies
-enthalpy
-enthralled
-enthralling
-enthrone
-enthroned
-enthronement
-enthuse
-enthused
-enthuses
-enthusiasm
-enthusiasms
-enthusiast
-enthusiastic
-enthusiastically
-enthusiasts
-enthusing
-entice
-enticed
-enticement
-enticements
-entices
-enticing
-enticingly
-entire
-entirely
-entires
-entirety
-entities
-entitle
-entitled
-entitlement
-entitlements
-entitles
-entitling
-entity
-entomb
-entombed
-entombment
-entombs
-entomological
-entomologist
-entomologists
-entomology
-entourage
-entrails
-entrain
-entrained
-entrainment
-entrance
-entranced
-entrances
-entrancing
-entrant
-entrants
-entrap
-entrapment
-entrapped
-entrapping
-entreat
-entreated
-entreaties
-entreating
-entreatingly
-entreats
-entreaty
-entree
-entrench
-entrenched
-entrenching
-entrenchment
-entrepreneur
-entrepreneurial
-entrepreneurs
-entrepreneurship
-entries
-entropic
-entropy
-entrust
-entrusted
-entrusting
-entrusts
-entry
-entwine
-entwined
-entwines
-entwining
-enumerable
-enumerate
-enumerated
-enumerates
-enumerating
-enumeration
-enumerations
-enumerator
-enumerators
-enunciate
-enunciated
-enunciating
-enunciation
-envelop
-envelope
-enveloped
-enveloper
-envelopers
-envelopes
-enveloping
-envelops
-enviable
-enviably
-envied
-envies
-envious
-enviously
-environ
-environment
-environmental
-environmentalism
-environmentalist
-environmentalists
-environmentally
-environments
-environs
-envisage
-envisaged
-envisages
-envisaging
-envision
-envisioned
-envoy
-envoys
-envy
-envying
-enwrap
-enzymatic
-enzyme
-enzymes
-eon
-eons
-eosin
-epaulettes
-ephemera
-ephemeral
-ephemeris
-ephor
-epic
-epically
-epicarp
-epicentre
-epics
-epicure
-epicurean
-epicycles
-epicycloid
-epidemic
-epidemics
-epidemiological
-epidemiologist
-epidemiologists
-epidemiology
-epidermal
-epidermis
-epidural
-epigenetic
-epigon
-epigones
-epigram
-epigrammatic
-epigrams
-epigraph
-epigraphical
-epigraphy
-epilepsy
-epileptic
-epileptics
-epilogue
-epinephrine
-epiphanies
-epiphenomena
-epiphenomenon
-episcopacy
-episcopal
-episcopalian
-episcopate
-episode
-episodes
-episodic
-episodically
-epistemic
-epistemological
-epistemology
-epistle
-epistles
-epistolary
-epitap
-epitaph
-epitaphs
-epitaxial
-epitaxy
-epithelial
-epithelium
-epithet
-epithetic
-epithets
-epitome
-epitomise
-epitomised
-epitomises
-epoch
-epochal
-epochs
-epoxies
-epoxy
-epsilon
-equable
-equably
-equal
-equalisation
-equalise
-equalised
-equaliser
-equalisers
-equalising
-equalities
-equality
-equalled
-equalling
-equally
-equals
-equanimity
-equate
-equated
-equates
-equating
-equation
-equations
-equator
-equatorial
-equerry
-equestrian
-equestrianism
-equiangular
-equidistant
-equilateral
-equilibrating
-equilibration
-equilibria
-equilibrium
-equine
-equinoctial
-equinox
-equinoxes
-equip
-equipartition
-equipment
-equipments
-equipped
-equipping
-equips
-equitable
-equitably
-equities
-equity
-equivalence
-equivalences
-equivalent
-equivalently
-equivalents
-equivocal
-equivocated
-equivocating
-equivocation
-equivocations
-era
-eradicate
-eradicated
-eradicating
-eradication
-eras
-erasable
-erase
-erased
-eraser
-erasers
-erases
-erasing
-erasure
-erasures
-erbium
-ere
-erect
-erected
-erecter
-erectile
-erecting
-erection
-erections
-erectly
-erects
-erg
-ergo
-ergodic
-ergonomic
-ergonomically
-ergonomics
-ergophobia
-ergot
-ergs
-erica
-ericas
-eritrea
-ermine
-erode
-eroded
-erodes
-eroding
-erogenous
-eros
-erose
-erosion
-erosional
-erosions
-erosive
-erotic
-erotica
-erotically
-eroticism
-err
-errand
-errands
-errant
-errata
-erratic
-erratically
-erratum
-erred
-erring
-erroneous
-erroneously
-error
-errors
-errs
-ersatz
-erst
-erstwhile
-erudite
-erudition
-erupt
-erupted
-erupting
-eruption
-eruptions
-eruptive
-erupts
-erysipelas
-esau
-escalade
-escalate
-escalated
-escalates
-escalating
-escalation
-escalator
-escalators
-escapade
-escapades
-escape
-escaped
-escapee
-escapees
-escapement
-escapes
-escaping
-escapism
-escapist
-escapology
-escarp
-escarpment
-escarpments
-escarps
-eschatological
-eschatology
-eschew
-eschewed
-eschewing
-eschews
-escort
-escorted
-escorting
-escorts
-escudo
-eskimo
-esoteric
-esoterica
-esoterically
-espadrilles
-especial
-especially
-espied
-espionage
-esplanade
-espousal
-espouse
-espoused
-espouses
-espousing
-espresso
-esprit
-espy
-espying
-esquire
-esquires
-essay
-essayed
-essayist
-essayists
-essays
-essen
-essence
-essences
-essential
-essentialism
-essentialist
-essentially
-essentials
-est
-establish
-established
-establishes
-establishing
-establishment
-establishments
-estate
-estates
-esteem
-esteemed
-esteems
-ester
-esters
-esthete
-esthetic
-estimable
-estimate
-estimated
-estimates
-estimating
-estimation
-estimations
-estimator
-estimators
-estonia
-estranged
-estrangement
-estrangements
-estuaries
-estuarine
-estuary
-eta
-etal
-etcetera
-etch
-etched
-etcher
-etchers
-etches
-etching
-etchings
-eternal
-eternally
-eternity
-ethane
-ethanol
-ether
-ethereal
-ethereally
-etherised
-ethic
-ethical
-ethically
-ethicist
-ethics
-ethiopia
-ethnic
-ethnical
-ethnically
-ethnicity
-ethnocentric
-ethnographer
-ethnographers
-ethnographic
-ethnography
-ethnological
-ethnology
-ethological
-ethologist
-ethologists
-ethology
-ethos
-ethyl
-ethylene
-etiquette
-etna
-etudes
-etui
-etymological
-etymologically
-etymologies
-etymologist
-etymologists
-etymology
-eucalyptus
-eugenic
-eugenics
-eukaryote
-eukaryotes
-eukaryotic
-eulogies
-eulogise
-eulogises
-eulogising
-eulogistic
-eulogy
-eunuch
-eunuchs
-euphemism
-euphemisms
-euphemistic
-euphemistically
-euphonious
-euphonium
-euphoniums
-euphony
-euphoria
-euphoric
-eurasia
-eurasian
-eureka
-eurekas
-euro
-europe
-european
-eurydice
-eutectic
-euthanasia
-evacuate
-evacuated
-evacuating
-evacuation
-evacuations
-evacuee
-evacuees
-evadable
-evade
-evaded
-evader
-evaders
-evades
-evading
-evaluable
-evaluate
-evaluated
-evaluates
-evaluating
-evaluation
-evaluational
-evaluations
-evaluative
-evaluator
-evaluators
-evanescent
-evangelical
-evangelicalism
-evangelicals
-evangelisation
-evangelise
-evangelising
-evangelism
-evangelist
-evangelistic
-evangelists
-evaporate
-evaporated
-evaporates
-evaporating
-evaporation
-evaporator
-evasion
-evasions
-evasive
-evasively
-evasiveness
-eve
-even
-evened
-evener
-evenhanded
-evening
-evenings
-evenly
-evenness
-evens
-evensong
-event
-eventful
-eventide
-eventing
-events
-eventual
-eventualities
-eventuality
-eventually
-ever
-everchanging
-everest
-evergreen
-evergreens
-everincreasing
-everlasting
-everlastingly
-everliving
-evermore
-everpresent
-eversion
-everting
-every
-everybody
-everyday
-everyone
-everything
-everywhere
-eves
-evict
-evicted
-evicting
-eviction
-evictions
-evicts
-evidence
-evidenced
-evidences
-evident
-evidential
-evidently
-evil
-evildoer
-evilly
-evilness
-evils
-evince
-evinced
-evinces
-evincing
-eviscerate
-evocation
-evocations
-evocative
-evocatively
-evoke
-evoked
-evokes
-evoking
-evolute
-evolution
-evolutionarily
-evolutionary
-evolutionism
-evolutionist
-evolutionists
-evolutions
-evolve
-evolved
-evolves
-evolving
-ewe
-ewes
-exacerbate
-exacerbated
-exacerbates
-exacerbating
-exacerbation
-exact
-exacted
-exacting
-exaction
-exactitude
-exactly
-exactness
-exacts
-exaggerate
-exaggerated
-exaggeratedly
-exaggerates
-exaggerating
-exaggeration
-exaggerations
-exalt
-exaltation
-exalted
-exalting
-exalts
-exam
-examinable
-examination
-examinations
-examine
-examined
-examinees
-examiner
-examiners
-examines
-examining
-example
-examples
-exams
-exasperate
-exasperated
-exasperatedly
-exasperating
-exasperation
-excavate
-excavated
-excavating
-excavation
-excavations
-excavator
-excavators
-exceed
-exceeded
-exceeding
-exceedingly
-exceeds
-excel
-excelled
-excellence
-excellencies
-excellency
-excellent
-excellently
-excelling
-excels
-excelsior
-except
-excepted
-excepting
-exception
-exceptionable
-exceptional
-exceptionally
-exceptions
-excepts
-excerpt
-excerpted
-excerpts
-excess
-excesses
-excessive
-excessively
-exchange
-exchangeable
-exchanged
-exchanger
-exchangers
-exchanges
-exchanging
-exchequer
-excise
-excised
-excising
-excision
-excitability
-excitable
-excitation
-excitations
-excite
-excited
-excitedly
-excitement
-excitements
-excites
-exciting
-excitingly
-exciton
-exclaim
-exclaimed
-exclaiming
-exclaims
-exclamation
-exclamations
-exclamatory
-exclude
-excluded
-excludes
-excluding
-exclusion
-exclusionary
-exclusions
-exclusive
-exclusively
-exclusiveness
-exclusivist
-exclusivity
-excommunicate
-excommunicated
-excommunicating
-excommunication
-excrete
-excruciating
-excruciatingly
-excruciation
-excursion
-excursionists
-excursions
-excursus
-excusable
-excuse
-excused
-excuses
-excusing
-executable
-execute
-executed
-executes
-executing
-execution
-executioner
-executioners
-executions
-executive
-executives
-executor
-executors
-exegesis
-exegetical
-exemplar
-exemplars
-exemplary
-exemplification
-exemplified
-exemplifies
-exemplify
-exemplifying
-exempt
-exempted
-exempting
-exemption
-exemptions
-exempts
-exercisable
-exercise
-exercised
-exerciser
-exercises
-exercising
-exert
-exerted
-exerting
-exertion
-exertions
-exerts
-exes
-exeunt
-exfoliation
-exhalation
-exhalations
-exhale
-exhaled
-exhales
-exhaling
-exhaust
-exhausted
-exhaustible
-exhausting
-exhaustion
-exhaustive
-exhaustively
-exhausts
-exhibit
-exhibited
-exhibiting
-exhibition
-exhibitioner
-exhibitioners
-exhibitionism
-exhibitionist
-exhibitionists
-exhibitions
-exhibitor
-exhibitors
-exhibits
-exhilarate
-exhilarated
-exhilarating
-exhilaration
-exhort
-exhortation
-exhortations
-exhorted
-exhorting
-exhorts
-exhumation
-exhume
-exhumed
-exhumes
-exhuming
-exhusband
-exigencies
-exigency
-exigent
-exiguous
-exile
-exiled
-exiles
-exiling
-exist
-existed
-existence
-existences
-existent
-existential
-existentialism
-existentialist
-existentialistic
-existentially
-existing
-exists
-exit
-exited
-exiting
-exits
-exmember
-exmembers
-exocrine
-exoderm
-exodus
-exogenous
-exogenously
-exonerate
-exonerated
-exonerates
-exonerating
-exoneration
-exorbitant
-exorbitantly
-exorcise
-exorcised
-exorcising
-exorcism
-exorcisms
-exorcist
-exoskeleton
-exothermic
-exothermically
-exotic
-exotica
-exotically
-exoticism
-expand
-expandability
-expandable
-expanded
-expander
-expanding
-expands
-expanse
-expanses
-expansible
-expansion
-expansionary
-expansionism
-expansionist
-expansions
-expansive
-expansively
-expansiveness
-expatriate
-expatriated
-expatriates
-expect
-expectancies
-expectancy
-expectant
-expectantly
-expectation
-expectational
-expectations
-expected
-expecting
-expectorate
-expectorated
-expectoration
-expects
-expedience
-expediency
-expedient
-expedients
-expedite
-expedited
-expedites
-expediting
-expedition
-expeditionary
-expeditions
-expeditious
-expeditiously
-expel
-expelled
-expelling
-expels
-expend
-expendable
-expended
-expending
-expenditure
-expenditures
-expends
-expense
-expenses
-expensive
-expensively
-experience
-experienced
-experiences
-experiencing
-experiential
-experiment
-experimental
-experimentalist
-experimentalists
-experimentally
-experimentation
-experimented
-experimenter
-experimenters
-experimenting
-experiments
-expert
-expertise
-expertly
-expertness
-experts
-expiate
-expiation
-expiatory
-expiration
-expiratory
-expire
-expired
-expires
-expiring
-expiry
-explain
-explainable
-explained
-explaining
-explains
-explanation
-explanations
-explanatory
-expletive
-expletives
-explicable
-explicate
-explicated
-explication
-explicative
-explicit
-explicitly
-explicitness
-explode
-exploded
-exploder
-exploders
-explodes
-exploding
-exploit
-exploitable
-exploitation
-exploitations
-exploitative
-exploited
-exploiter
-exploiters
-exploiting
-exploits
-explorable
-exploration
-explorations
-exploratory
-explore
-explored
-explorer
-explorers
-explores
-exploring
-explosion
-explosions
-explosive
-explosively
-explosiveness
-explosives
-expo
-exponent
-exponential
-exponentially
-exponentiation
-exponents
-export
-exportability
-exportable
-exported
-exporter
-exporters
-exporting
-exports
-expose
-exposed
-exposes
-exposing
-exposition
-expositions
-expository
-expostulate
-expostulated
-expostulating
-expostulation
-expostulations
-exposure
-exposures
-expound
-expounded
-expounding
-expounds
-express
-expressed
-expresses
-expressible
-expressing
-expression
-expressionism
-expressionist
-expressionistic
-expressionists
-expressionless
-expressionlessly
-expressions
-expressive
-expressively
-expressiveness
-expressly
-expropriate
-expropriated
-expropriation
-expropriations
-expulsion
-expulsions
-expunge
-expunged
-expunges
-expunging
-expurgate
-expurgated
-expurgating
-exquisite
-exquisitely
-exquisiteness
-ext
-extend
-extendability
-extendable
-extended
-extender
-extenders
-extendible
-extending
-extends
-extensibility
-extensible
-extension
-extensional
-extensionally
-extensions
-extensive
-extensively
-extensiveness
-extensors
-extent
-extents
-extenuate
-extenuated
-extenuating
-extenuation
-exterior
-exteriors
-exterminate
-exterminated
-exterminates
-exterminating
-extermination
-exterminations
-exterminator
-exterminators
-extern
-external
-externalised
-externally
-externals
-externs
-extinct
-extinction
-extinctions
-extinguish
-extinguished
-extinguisher
-extinguishers
-extinguishes
-extinguishing
-extinguishment
-extirpate
-extirpation
-extol
-extolled
-extolling
-extols
-extort
-extorted
-extorting
-extortion
-extortionate
-extortionately
-extortionists
-extorts
-extra
-extracellular
-extract
-extractable
-extracted
-extracting
-extraction
-extractions
-extractive
-extractor
-extracts
-extraditable
-extradite
-extradited
-extraditing
-extradition
-extragalactic
-extrajudicial
-extralinguistic
-extramarital
-extramural
-extraneous
-extraordinarily
-extraordinary
-extrapolate
-extrapolated
-extrapolating
-extrapolation
-extrapolations
-extras
-extrasolar
-extraterrestrial
-extraterrestrials
-extraterritorial
-extravagance
-extravagances
-extravagant
-extravagantly
-extravaganza
-extravaganzas
-extrema
-extremal
-extreme
-extremely
-extremes
-extremest
-extremism
-extremist
-extremists
-extremities
-extremity
-extricate
-extricated
-extricating
-extrication
-extrinsic
-extrinsically
-extroversion
-extrovert
-extroverts
-extrude
-extruded
-extrusion
-extrusions
-exuberance
-exuberant
-exuberantly
-exudate
-exude
-exuded
-exudes
-exuding
-exult
-exultant
-exultantly
-exultation
-exulted
-exulting
-exultingly
-exults
-exwife
-exwives
-eye
-eyeball
-eyeballs
-eyebrow
-eyebrows
-eyecatching
-eyed
-eyeful
-eyeglass
-eyeglasses
-eyeing
-eyelash
-eyelashes
-eyeless
-eyelet
-eyelets
-eyelevel
-eyelid
-eyelids
-eyelike
-eyeliner
-eyepatch
-eyepiece
-eyes
-eyeshadow
-eyesight
-eyesore
-eyesores
-eyeteeth
-eyetooth
-eyewash
-eyewitness
-eyewitnesses
-fab
-fable
-fabled
-fables
-fabric
-fabricate
-fabricated
-fabricates
-fabricating
-fabrication
-fabrications
-fabricator
-fabrics
-fabulists
-fabulous
-fabulously
-facade
-facades
-face
-faced
-faceless
-facelift
-faceplate
-facer
-facers
-faces
-facet
-faceted
-faceting
-facetious
-facetiously
-facetiousness
-facets
-facia
-facial
-facials
-facile
-facilitate
-facilitated
-facilitates
-facilitating
-facilitation
-facilitative
-facilitator
-facilitators
-facilities
-facility
-facing
-facings
-facsimile
-facsimiles
-fact
-faction
-factional
-factionalism
-factions
-factious
-factitious
-factor
-factored
-factorial
-factorials
-factories
-factoring
-factorisable
-factorisation
-factorisations
-factorise
-factorised
-factorises
-factorising
-factors
-factory
-factotum
-facts
-factual
-factually
-faculties
-faculty
-fad
-fade
-faded
-fadeout
-fades
-fading
-fads
-faecal
-faeces
-fag
-faggot
-faggots
-fagot
-fags
-fail
-failed
-failing
-failings
-fails
-failure
-failures
-faint
-fainted
-fainter
-faintest
-fainthearted
-fainting
-faintly
-faintness
-faints
-fair
-fairer
-fairest
-fairground
-fairgrounds
-fairies
-fairing
-fairish
-fairly
-fairness
-fairs
-fairsex
-fairway
-fairways
-fairy
-fairytale
-faith
-faithful
-faithfully
-faithfulness
-faithless
-faithlessness
-faiths
-fake
-faked
-fakers
-fakery
-fakes
-faking
-falcon
-falconer
-falconry
-falcons
-fall
-fallacies
-fallacious
-fallacy
-fallen
-faller
-fallers
-fallguy
-fallibility
-fallible
-falling
-fallopian
-fallout
-fallow
-falls
-false
-falsebay
-falsehood
-falsehoods
-falsely
-falseness
-falser
-falsetto
-falsifiability
-falsifiable
-falsification
-falsifications
-falsified
-falsifier
-falsifiers
-falsifies
-falsify
-falsifying
-falsities
-falsity
-falter
-faltered
-faltering
-falteringly
-falters
-fame
-famed
-familial
-familiar
-familiarisation
-familiarise
-familiarised
-familiarising
-familiarities
-familiarity
-familiarly
-families
-family
-famine
-famines
-famish
-famished
-famous
-famously
-fan
-fanatic
-fanatical
-fanatically
-fanaticism
-fanatics
-fanbelt
-fanciable
-fancied
-fancier
-fanciers
-fancies
-fanciest
-fanciful
-fancifully
-fancy
-fancying
-fandango
-fanfare
-fanfares
-fang
-fangs
-fanlight
-fanned
-fanning
-fanny
-fans
-fantail
-fantails
-fantasia
-fantastic
-far
-farad
-faraday
-faraway
-farce
-farces
-farcical
-fare
-fared
-fares
-farewell
-farewells
-farfetched
-farflung
-faring
-farm
-farmed
-farmer
-farmers
-farmhouse
-farmhouses
-farming
-farmings
-farmland
-farms
-farmstead
-farmsteads
-farmyard
-farmyards
-faroff
-farout
-farrago
-farreaching
-farrier
-farriers
-farrow
-farseeing
-farsighted
-farther
-farthest
-farthing
-farthings
-fascia
-fascias
-fascinate
-fascinated
-fascinates
-fascinating
-fascinatingly
-fascination
-fascinations
-fascism
-fascist
-fascists
-fashion
-fashionable
-fashionably
-fashioned
-fashioning
-fashions
-fast
-fasted
-fasten
-fastened
-fastener
-fasteners
-fastening
-fastenings
-fastens
-faster
-fastest
-fastidious
-fastidiously
-fastidiousness
-fasting
-fastings
-fastness
-fastnesses
-fasts
-fat
-fatal
-fatalism
-fatalist
-fatalistic
-fatalistically
-fatalities
-fatality
-fatally
-fatcat
-fate
-fated
-fateful
-fates
-fatheadedness
-father
-fathered
-fatherhood
-fathering
-fatherinlaw
-fatherland
-fatherless
-fatherly
-fathers
-fathersinlaw
-fathom
-fathomed
-fathoming
-fathomless
-fathoms
-fatigue
-fatigued
-fatigues
-fatiguing
-fatless
-fatness
-fats
-fatted
-fatten
-fattened
-fattening
-fattens
-fatter
-fattest
-fattier
-fattiest
-fatty
-fatuity
-fatuous
-fatuously
-fatwa
-faucet
-faucets
-fault
-faulted
-faulting
-faultless
-faultlessly
-faults
-faulty
-faun
-fauna
-faunal
-faunas
-fauns
-faust
-faustus
-favour
-favourable
-favourably
-favoured
-favouring
-favourite
-favourites
-favouritism
-favours
-fawn
-fawned
-fawning
-fawningly
-fawns
-fax
-faxed
-faxes
-faxing
-fealty
-fear
-feared
-fearful
-fearfully
-fearfulness
-fearing
-fearless
-fearlessly
-fearlessness
-fears
-fearsome
-fearsomely
-fearsomeness
-feasibility
-feasible
-feasibly
-feast
-feasted
-feasting
-feasts
-feat
-feather
-feathered
-feathering
-featherlight
-feathers
-featherweight
-feathery
-feats
-feature
-featured
-featureless
-features
-featuring
-febrile
-february
-feckless
-fecklessness
-fecund
-fecundity
-fed
-federal
-federalism
-federalist
-federalists
-federally
-federate
-federated
-federation
-federations
-fedora
-feds
-fedup
-fee
-feeble
-feebleminded
-feebleness
-feebler
-feeblest
-feebly
-feed
-feedback
-feeder
-feeders
-feeding
-feedings
-feeds
-feedstock
-feedstuffs
-feel
-feeler
-feelers
-feeling
-feelingly
-feelings
-feels
-fees
-feet
-feign
-feigned
-feigning
-feigns
-feint
-feinted
-feinting
-feints
-feldspar
-feldspars
-felicia
-felicitation
-felicitations
-felicities
-felicitous
-felicity
-feline
-felines
-fell
-fellatio
-felled
-feller
-felling
-fellow
-fellows
-fellowship
-fellowships
-fells
-felon
-felonious
-felons
-felony
-felt
-feltpen
-female
-femaleness
-females
-feminine
-femininely
-femininity
-feminism
-feminist
-feminists
-femur
-femurs
-fen
-fence
-fenced
-fencepost
-fencer
-fencers
-fences
-fencing
-fencings
-fend
-fended
-fender
-fenders
-fending
-fends
-fenland
-fennel
-fens
-feral
-ferment
-fermentation
-fermented
-fermenting
-ferments
-fermion
-fermions
-fern
-ferns
-ferny
-ferocious
-ferociously
-ferociousness
-ferocity
-ferret
-ferreted
-ferreting
-ferrets
-ferric
-ferried
-ferries
-ferrite
-ferromagnetic
-ferrous
-ferrule
-ferry
-ferrying
-ferryman
-fertile
-fertilisation
-fertilise
-fertilised
-fertiliser
-fertilisers
-fertilises
-fertilising
-fertility
-fervent
-fervently
-fervid
-fervidly
-fervour
-fescue
-fest
-festal
-fester
-festered
-festering
-festers
-festival
-festivals
-festive
-festivities
-festivity
-festoon
-festooned
-festooning
-festoons
-fetal
-fetch
-fetched
-fetches
-fetching
-fete
-feted
-fetes
-fetid
-fetish
-fetishes
-fetishism
-fetishist
-fetishistic
-fetishists
-fetlock
-fetlocks
-fetter
-fettered
-fetters
-fettle
-fetus
-feud
-feudal
-feudalism
-feuded
-feuding
-feudist
-feuds
-fever
-fevered
-feverish
-feverishly
-fevers
-few
-fewer
-fewest
-fewness
-fez
-fiance
-fiancee
-fiasco
-fiat
-fib
-fibbed
-fibber
-fibbers
-fibbing
-fibers
-fibre
-fibreboard
-fibred
-fibreglass
-fibres
-fibrillating
-fibrillation
-fibroblast
-fibroblasts
-fibrosis
-fibrous
-fibs
-fibula
-fiche
-fiches
-fickle
-fickleness
-fiction
-fictional
-fictions
-fictitious
-fictive
-ficus
-fiddle
-fiddled
-fiddler
-fiddlers
-fiddles
-fiddlesticks
-fiddling
-fiddlings
-fiddly
-fidelity
-fidget
-fidgeted
-fidgeting
-fidgets
-fidgety
-fiduciary
-fief
-fiefdom
-fiefdoms
-fiefs
-field
-fielded
-fielder
-fielders
-fielding
-fields
-fieldwork
-fieldworker
-fieldworkers
-fiend
-fiendish
-fiendishly
-fiends
-fierce
-fiercely
-fierceness
-fiercer
-fiercest
-fierier
-fieriest
-fierily
-fiery
-fiesta
-fiestas
-fife
-fifes
-fifteen
-fifteenth
-fifth
-fifthly
-fifths
-fifties
-fiftieth
-fifty
-fig
-fight
-fightback
-fighter
-fighters
-fighting
-fights
-figleaf
-figment
-figments
-figs
-figtree
-figural
-figuration
-figurative
-figuratively
-figure
-figured
-figurehead
-figureheads
-figurer
-figures
-figurine
-figurines
-figuring
-fiji
-fijians
-filament
-filamentary
-filamentous
-filaments
-filch
-filched
-file
-filed
-filer
-filers
-files
-filet
-filial
-filibuster
-filigree
-filing
-filings
-fill
-filled
-filler
-fillers
-fillet
-fillets
-fillies
-filling
-fillings
-fillip
-fills
-filly
-film
-filmed
-filmic
-filming
-filmmakers
-films
-filmset
-filmy
-filter
-filtered
-filtering
-filters
-filth
-filthier
-filthiest
-filthily
-filthy
-filtrate
-filtration
-fin
-final
-finale
-finales
-finalisation
-finalise
-finalised
-finalising
-finalist
-finalists
-finality
-finally
-finals
-finance
-financed
-finances
-financial
-financially
-financier
-financiers
-financing
-finch
-finches
-find
-findable
-finder
-finders
-finding
-findings
-finds
-fine
-fined
-finely
-fineness
-finer
-finery
-fines
-finesse
-finest
-finetune
-finetuned
-finetunes
-finetuning
-finger
-fingerboard
-fingered
-fingering
-fingerings
-fingerless
-fingermarks
-fingernail
-fingernails
-fingerprint
-fingerprinted
-fingerprinting
-fingerprints
-fingers
-fingertip
-fingertips
-finial
-finicky
-fining
-finis
-finish
-finished
-finisher
-finishers
-finishes
-finishing
-finite
-finitely
-finiteness
-finland
-finn
-finned
-finnish
-fins
-fiord
-fiords
-fir
-fire
-firearm
-firearms
-fireball
-fireballs
-firebomb
-firebombed
-firebombing
-firebombs
-firebox
-firebrand
-firecontrol
-fired
-firefight
-firefighter
-firefighters
-firefighting
-fireflies
-firefly
-fireguard
-firelight
-firelighters
-fireman
-firemen
-fireplace
-fireplaces
-firepower
-fireproof
-fireproofed
-firer
-fires
-fireside
-firesides
-firewood
-firework
-fireworks
-firing
-firings
-firkin
-firm
-firmament
-firmed
-firmer
-firmest
-firming
-firmly
-firmness
-firms
-firmware
-firs
-first
-firstaid
-firstborn
-firstborns
-firsthand
-firstly
-firsts
-firth
-fiscal
-fiscally
-fish
-fished
-fisher
-fisheries
-fisherman
-fishermen
-fishers
-fishery
-fishes
-fishhook
-fishhooks
-fishier
-fishiest
-fishing
-fishings
-fishlike
-fishmonger
-fishmongers
-fishnet
-fishwife
-fishy
-fissile
-fission
-fissions
-fissure
-fissured
-fissures
-fist
-fisted
-fistful
-fisticuffs
-fists
-fistula
-fit
-fitful
-fitfully
-fitfulness
-fitly
-fitment
-fitments
-fitness
-fits
-fitted
-fitter
-fitters
-fittest
-fitting
-fittingly
-fittings
-five
-fivefold
-fiver
-fivers
-fives
-fix
-fixable
-fixate
-fixated
-fixates
-fixation
-fixations
-fixative
-fixed
-fixedly
-fixer
-fixers
-fixes
-fixing
-fixings
-fixture
-fixtures
-fizz
-fizzed
-fizzes
-fizzier
-fizziest
-fizzing
-fizzle
-fizzled
-fizzles
-fizzy
-fjord
-fjords
-flab
-flabbergasted
-flabbier
-flabbiest
-flabby
-flabs
-flaccid
-flaccidity
-flack
-flag
-flagella
-flagellate
-flagellation
-flagged
-flagging
-flagon
-flagons
-flagpole
-flagrant
-flagrantly
-flags
-flagship
-flagships
-flair
-flak
-flake
-flaked
-flakes
-flakiest
-flaking
-flaky
-flamboyance
-flamboyant
-flamboyantly
-flame
-flamed
-flamenco
-flameproof
-flames
-flaming
-flamingo
-flammability
-flammable
-flan
-flange
-flanged
-flanges
-flank
-flanked
-flanker
-flanking
-flanks
-flannel
-flannelette
-flannels
-flans
-flap
-flapjack
-flapped
-flapper
-flappers
-flapping
-flaps
-flare
-flared
-flares
-flareup
-flareups
-flaring
-flash
-flashback
-flashbacks
-flashbulb
-flashed
-flasher
-flashes
-flashier
-flashiest
-flashily
-flashing
-flashlight
-flashlights
-flashpoint
-flashpoints
-flashy
-flask
-flasks
-flat
-flatfish
-flatly
-flatmate
-flatmates
-flatness
-flats
-flatten
-flattened
-flattening
-flattens
-flatter
-flattered
-flatterer
-flatterers
-flattering
-flatteringly
-flatters
-flattery
-flattest
-flattish
-flatulence
-flatulent
-flatus
-flatworms
-flaunt
-flaunted
-flaunting
-flaunts
-flautist
-flavour
-flavoured
-flavouring
-flavourings
-flavours
-flaw
-flawed
-flawless
-flawlessly
-flaws
-flax
-flaxen
-flay
-flayed
-flayer
-flayers
-flaying
-flea
-fleabites
-fleas
-fleck
-flecked
-flecks
-fled
-fledge
-fledged
-fledgeling
-fledges
-fledgling
-fledglings
-flee
-fleece
-fleeced
-fleeces
-fleecing
-fleecy
-fleeing
-flees
-fleet
-fleeted
-fleeter
-fleeting
-fleetingly
-fleetly
-fleets
-flemish
-flesh
-fleshed
-flesher
-fleshes
-fleshier
-fleshiest
-fleshing
-fleshless
-fleshly
-fleshpots
-fleshy
-flew
-flex
-flexed
-flexes
-flexibilities
-flexibility
-flexible
-flexibly
-flexile
-flexing
-flexion
-flexor
-flick
-flicked
-flicker
-flickered
-flickering
-flickers
-flickery
-flicking
-flicks
-flier
-fliers
-flies
-flight
-flighted
-flightless
-flightpath
-flights
-flighty
-flimsier
-flimsiest
-flimsily
-flimsiness
-flimsy
-flinch
-flinched
-flinching
-fling
-flinging
-flings
-flint
-flintlock
-flintlocks
-flints
-flinty
-flip
-flipflop
-flipflops
-flippable
-flippancy
-flippant
-flippantly
-flipped
-flipper
-flippers
-flipping
-flips
-flirt
-flirtation
-flirtations
-flirtatious
-flirtatiously
-flirted
-flirting
-flirts
-flit
-fliting
-flits
-flitted
-flitting
-float
-floated
-floater
-floaters
-floating
-floats
-floaty
-flock
-flocked
-flocking
-flocks
-floe
-flog
-flogged
-flogger
-floggers
-flogging
-floggings
-flogs
-flood
-flooded
-floodgates
-flooding
-floodlight
-floodlighting
-floodlights
-floodlit
-floods
-floor
-floorboard
-floorboards
-floored
-flooring
-floors
-floorspace
-floozie
-floozies
-floozy
-flop
-flopped
-flopper
-floppier
-floppies
-floppiest
-flopping
-floppy
-flops
-flora
-floral
-floras
-floreat
-florence
-floret
-florid
-florida
-floridly
-florin
-florins
-florist
-florists
-floss
-flosses
-flossing
-flossy
-flotation
-flotations
-flotilla
-flotillas
-flotsam
-flounce
-flounced
-flounces
-flouncing
-flounder
-floundered
-floundering
-flounders
-flour
-floured
-flourish
-flourished
-flourishes
-flourishing
-flours
-floury
-flout
-flouted
-flouting
-flouts
-flow
-flowed
-flower
-flowered
-flowering
-flowerless
-flowerpot
-flowerpots
-flowers
-flowery
-flowing
-flown
-flows
-flub
-flubbed
-fluctuate
-fluctuated
-fluctuates
-fluctuating
-fluctuation
-fluctuations
-flue
-fluency
-fluent
-fluently
-flues
-fluff
-fluffed
-fluffier
-fluffiest
-fluffing
-fluffs
-fluffy
-fluid
-fluidised
-fluidity
-fluidly
-fluids
-fluke
-flukes
-flukey
-flukier
-flukiest
-flumes
-flumped
-flung
-flunked
-fluor
-fluoresce
-fluorescence
-fluorescent
-fluoresces
-fluorescing
-fluoridation
-fluoride
-fluorine
-fluorocarbon
-fluorocarbons
-flurried
-flurries
-flurry
-flush
-flushed
-flusher
-flushes
-flushing
-fluster
-flustered
-flute
-fluted
-flutes
-fluting
-flutist
-flutter
-fluttered
-fluttering
-flutters
-fluttery
-fluvial
-flux
-fluxes
-fly
-flyaway
-flyer
-flyers
-flyhalf
-flying
-flyover
-flyovers
-flypaper
-flypast
-flyway
-flyways
-flyweight
-flywheel
-foal
-foaled
-foaling
-foals
-foam
-foamed
-foamier
-foamiest
-foaming
-foams
-foamy
-fob
-fobbed
-fobbing
-fobs
-focal
-focally
-foci
-focus
-focused
-focuses
-focusing
-focussed
-focusses
-focussing
-fodder
-fodders
-foe
-foehns
-foes
-foetal
-foetid
-foetus
-foetuses
-fog
-fogbank
-fogey
-fogged
-foggier
-foggiest
-fogging
-foggy
-foghorn
-foghorns
-fogs
-fogy
-foible
-foibles
-foil
-foiled
-foiling
-foils
-foist
-foisted
-foisting
-fold
-folded
-folder
-folders
-folding
-folds
-foliage
-foliate
-foliated
-folio
-folk
-folkart
-folkish
-folklore
-folklorist
-folklorists
-folks
-folktale
-follicle
-follicles
-follicular
-follies
-follow
-followable
-followed
-follower
-followers
-following
-followings
-follows
-folly
-foment
-fomented
-fomenting
-fond
-fondant
-fonder
-fondest
-fondle
-fondled
-fondles
-fondling
-fondly
-fondness
-fondue
-fondues
-font
-fontanel
-fonts
-food
-foodless
-foods
-foodstuff
-foodstuffs
-fool
-fooled
-foolery
-foolhardily
-foolhardiness
-foolhardy
-fooling
-foolish
-foolishly
-foolishness
-foolproof
-fools
-foolscap
-foot
-footage
-footages
-football
-footballer
-footballers
-footballing
-footballs
-footbath
-footbridge
-footed
-footfall
-footfalls
-footgear
-foothill
-foothills
-foothold
-footholds
-footing
-footings
-footless
-footlights
-footloose
-footman
-footmarks
-footmen
-footnote
-footnotes
-footpads
-footpath
-footpaths
-footplate
-footprint
-footprints
-footrest
-foots
-footsie
-footsore
-footstep
-footsteps
-footstool
-footstools
-footway
-footwear
-footwork
-fop
-fops
-for
-forage
-foraged
-foragers
-forages
-foraging
-foramen
-foray
-forays
-forbad
-forbade
-forbear
-forbearance
-forbearing
-forbears
-forbid
-forbidden
-forbidding
-forbiddingly
-forbids
-forbore
-force
-forced
-forcefeed
-forcefeeding
-forceful
-forcefully
-forcefulness
-forceps
-forces
-forcible
-forcibly
-forcing
-ford
-forded
-fording
-fords
-fore
-forearm
-forearmed
-forearms
-forebear
-forebears
-foreboded
-foreboding
-forebodings
-forebrain
-forecast
-forecaster
-forecasters
-forecasting
-forecasts
-foreclose
-foreclosed
-foreclosure
-forecourt
-forecourts
-foredeck
-forefather
-forefathers
-forefinger
-forefingers
-forefront
-foregather
-foregathered
-forego
-foregoing
-foregone
-foreground
-foregrounded
-foregrounding
-foregrounds
-forehand
-forehead
-foreheads
-foreign
-foreigner
-foreigners
-foreignness
-foreknowledge
-foreland
-foreleg
-forelegs
-forelimbs
-forelock
-foreman
-foremen
-foremost
-forename
-forenames
-forensic
-forensically
-forepaw
-forepaws
-foreplay
-forerunner
-forerunners
-foresail
-foresaw
-foresee
-foreseeability
-foreseeable
-foreseeing
-foreseen
-foresees
-foreshadow
-foreshadowed
-foreshadowing
-foreshadows
-foreshore
-foreshores
-foreshortened
-foreshortening
-foresight
-foreskin
-foreskins
-forest
-forestall
-forestalled
-forestalling
-forestalls
-forested
-forester
-foresters
-forestry
-forests
-foretaste
-foretastes
-foretell
-foretelling
-forethought
-foretold
-forever
-forewarn
-forewarned
-forewarning
-foreword
-forewords
-forfeit
-forfeited
-forfeiting
-forfeits
-forfeiture
-forgave
-forge
-forged
-forger
-forgeries
-forgers
-forgery
-forges
-forget
-forgetful
-forgetfulness
-forgetmenot
-forgetmenots
-forgets
-forgettable
-forgetting
-forging
-forgings
-forgivable
-forgive
-forgiven
-forgiveness
-forgives
-forgiving
-forgo
-forgoing
-forgone
-forgot
-forgotten
-fork
-forked
-forking
-forks
-forlorn
-forlornly
-forlornness
-form
-formal
-formaldehyde
-formalin
-formalisation
-formalisations
-formalise
-formalised
-formalises
-formalising
-formalism
-formalisms
-formalist
-formalistic
-formalities
-formality
-formally
-formant
-format
-formated
-formation
-formations
-formative
-formats
-formatted
-formatting
-formed
-former
-formerly
-formers
-formic
-formidable
-formidably
-forming
-formless
-formlessness
-formosa
-forms
-formula
-formulae
-formulaic
-formulary
-formulas
-formulate
-formulated
-formulates
-formulating
-formulation
-formulations
-formulator
-fornicate
-fornicated
-fornicates
-fornicating
-fornication
-fornicator
-fornicators
-forsake
-forsaken
-forsakes
-forsaking
-forsook
-forswear
-forswearing
-forswore
-forsworn
-forsythia
-fort
-forte
-forth
-forthcoming
-forthright
-forthrightly
-forthrightness
-forthwith
-forties
-fortieth
-fortification
-fortifications
-fortified
-fortify
-fortifying
-fortissimo
-fortitude
-fortknox
-fortnight
-fortnightly
-fortnights
-fortress
-fortresses
-forts
-fortuitous
-fortuitously
-fortunate
-fortunately
-fortune
-fortunes
-fortuneteller
-fortunetellers
-fortunetelling
-forty
-forum
-forums
-forward
-forwarded
-forwarder
-forwarding
-forwardlooking
-forwardly
-forwardness
-forwards
-fossa
-fossil
-fossiliferous
-fossilise
-fossilised
-fossilising
-fossils
-foster
-fostered
-fostering
-fosters
-fought
-foul
-fouled
-fouler
-foulest
-fouling
-foully
-foulmouthed
-foulness
-fouls
-foulup
-foulups
-found
-foundation
-foundational
-foundations
-founded
-founder
-foundered
-foundering
-founders
-founding
-foundling
-foundries
-foundry
-founds
-fount
-fountain
-fountains
-founts
-four
-fourfold
-fours
-foursome
-fourteen
-fourteenth
-fourth
-fourthly
-fourths
-fowl
-fowls
-fox
-foxed
-foxes
-foxhole
-foxholes
-foxhounds
-foxhunt
-foxhunting
-foxhunts
-foxier
-foxiest
-foxily
-foxiness
-foxing
-foxtrot
-foxtrots
-foxy
-foyer
-foyers
-fracas
-fractal
-fractals
-fraction
-fractional
-fractionally
-fractionate
-fractionated
-fractionating
-fractionation
-fractions
-fractious
-fracture
-fractured
-fractures
-fracturing
-fragile
-fragility
-fragment
-fragmentary
-fragmentation
-fragmented
-fragmenting
-fragments
-fragrance
-fragrances
-fragrant
-frail
-frailer
-frailest
-frailly
-frailties
-frailty
-frame
-framed
-framer
-framers
-frames
-frameup
-framework
-frameworks
-framing
-franc
-france
-franchise
-franchised
-franchisee
-franchisees
-franchises
-franchising
-franchisor
-francophone
-francs
-frangipani
-frank
-franked
-franker
-frankest
-frankfurter
-frankincense
-franking
-frankly
-frankness
-franks
-frantic
-frantically
-fraternal
-fraternise
-fraternising
-fraternities
-fraternity
-fratricidal
-fratricide
-fraud
-frauds
-fraudster
-fraudsters
-fraudulent
-fraudulently
-fraught
-fray
-frayed
-fraying
-frays
-frazzle
-frazzled
-freak
-freaked
-freakish
-freaks
-freaky
-freckle
-freckled
-freckles
-free
-freebie
-freebooters
-freed
-freedom
-freedoms
-freefall
-freefalling
-freeforall
-freehand
-freehold
-freeholder
-freeholders
-freeholds
-freeing
-freelance
-freelancer
-freelancers
-freelances
-freelancing
-freely
-freeman
-freemasonry
-freemen
-freer
-freerange
-frees
-freesia
-freesias
-freestanding
-freestyle
-freeway
-freewheeling
-freewheels
-freeze
-freezer
-freezers
-freezes
-freezing
-freight
-freighted
-freighter
-freighters
-freights
-french
-frenetic
-frenetically
-frenzied
-frenziedly
-frenzies
-frenzy
-freon
-freons
-frequencies
-frequency
-frequent
-frequented
-frequenting
-frequently
-frequents
-fresco
-fresh
-freshen
-freshened
-freshener
-fresheners
-freshening
-freshens
-fresher
-freshers
-freshest
-freshly
-freshman
-freshmen
-freshness
-freshwater
-fret
-fretboard
-fretful
-fretfully
-fretfulness
-fretless
-frets
-fretsaw
-fretsaws
-fretted
-fretting
-fretwork
-freud
-freya
-friable
-friar
-friars
-friary
-fricative
-fricatives
-friction
-frictional
-frictionless
-frictions
-friday
-fridays
-fridge
-fridges
-fried
-friend
-friendless
-friendlessness
-friendlier
-friendlies
-friendliest
-friendlily
-friendliness
-friendly
-friends
-friendship
-friendships
-friers
-fries
-frieze
-friezes
-frigate
-frigates
-fright
-frighted
-frighten
-frightened
-frighteners
-frightening
-frighteningly
-frightens
-frightful
-frightfully
-frights
-frigid
-frigidity
-frigidly
-frijole
-frill
-frilled
-frillier
-frilliest
-frills
-frilly
-fringe
-fringed
-fringes
-fringing
-fringy
-frippery
-frisk
-frisked
-friskier
-friskiest
-friskily
-frisking
-frisks
-frisky
-frisson
-fritter
-frittered
-frittering
-fritters
-frivol
-frivolities
-frivolity
-frivolous
-frivolously
-frivols
-frizzle
-frizzles
-frizzy
-fro
-frock
-frocks
-frog
-froggy
-frogman
-frogmarched
-frogmen
-frogs
-frolic
-frolicked
-frolicking
-frolics
-frolicsome
-from
-frond
-fronds
-front
-frontage
-frontages
-frontal
-frontally
-frontals
-fronted
-frontier
-frontiers
-fronting
-frontispiece
-frontispieces
-frontline
-frontpage
-fronts
-frost
-frostbite
-frostbitten
-frosted
-frostier
-frostiest
-frostily
-frosting
-frosts
-frosty
-froth
-frothed
-frothier
-frothiest
-frothing
-froths
-frothy
-froward
-frown
-frowned
-frowning
-frowningly
-frowns
-froze
-frozen
-fructose
-frugal
-frugality
-frugally
-fruit
-fruitcake
-fruitcakes
-fruited
-fruiter
-fruitful
-fruitfully
-fruitfulness
-fruitier
-fruitiest
-fruitiness
-fruiting
-fruition
-fruitless
-fruitlessly
-fruitlessness
-fruits
-fruity
-frumps
-frumpy
-frustrate
-frustrated
-frustratedly
-frustrates
-frustrating
-frustratingly
-frustration
-frustrations
-frustum
-fry
-fryer
-fryers
-frying
-fryings
-fuchsia
-fuchsias
-fuddle
-fuddled
-fuddles
-fudge
-fudged
-fudges
-fudging
-fuel
-fuelled
-fuelling
-fuels
-fug
-fugal
-fugitive
-fugitives
-fugue
-fugues
-fuhrer
-fulcrum
-fulfil
-fulfilled
-fulfilling
-fulfilment
-fulfils
-full
-fullback
-fullbacks
-fullblooded
-fullblown
-fullbodied
-fullcolour
-fuller
-fullest
-fullgrown
-fulling
-fullish
-fulllength
-fullmoon
-fullness
-fullpage
-fullscale
-fullstop
-fullstops
-fulltime
-fulltimer
-fulltimers
-fully
-fulminant
-fulminate
-fulminating
-fulmination
-fulminations
-fulsome
-fulsomely
-fumarole
-fumaroles
-fumble
-fumbled
-fumbles
-fumbling
-fume
-fumed
-fumes
-fumigate
-fumigating
-fumigation
-fuming
-fumingly
-fun
-function
-functional
-functionalism
-functionalist
-functionalities
-functionality
-functionally
-functionaries
-functionary
-functioned
-functioning
-functionless
-functions
-fund
-fundamental
-fundamentalism
-fundamentalist
-fundamentalists
-fundamentally
-fundamentals
-funded
-fundholders
-fundholding
-funding
-fundings
-fundraiser
-fundraisers
-fundraising
-funds
-funeral
-funerals
-funerary
-funereal
-funfair
-fungal
-fungi
-fungicidal
-fungicide
-fungicides
-fungoid
-fungous
-fungus
-funguses
-funicular
-funk
-funked
-funkier
-funky
-funnel
-funnelled
-funnelling
-funnels
-funnier
-funnies
-funniest
-funnily
-funny
-fur
-furbished
-furbishing
-furies
-furious
-furiously
-furled
-furling
-furlong
-furlongs
-furlough
-furls
-furnace
-furnaces
-furnish
-furnished
-furnishers
-furnishes
-furnishing
-furnishings
-furniture
-furore
-furores
-furred
-furrier
-furriers
-furriest
-furriness
-furring
-furrow
-furrowed
-furrows
-furry
-furs
-further
-furtherance
-furthered
-furthering
-furthermore
-furthers
-furthest
-furtive
-furtively
-furtiveness
-fury
-furze
-fuse
-fused
-fuselage
-fuses
-fusible
-fusilier
-fusiliers
-fusillade
-fusing
-fusion
-fusions
-fuss
-fussed
-fusses
-fussier
-fussiest
-fussily
-fussiness
-fussing
-fussy
-fustian
-fusty
-futile
-futilely
-futility
-futon
-future
-futures
-futurism
-futurist
-futuristic
-futurists
-futurity
-futurologists
-fuzz
-fuzzed
-fuzzes
-fuzzier
-fuzziest
-fuzzily
-fuzziness
-fuzzy
-gab
-gabble
-gabbled
-gabbles
-gabbling
-gaberdine
-gable
-gabled
-gables
-gabon
-gad
-gadded
-gadding
-gadfly
-gadget
-gadgetry
-gadgets
-gaff
-gaffe
-gaffes
-gag
-gaga
-gage
-gagged
-gagging
-gaggle
-gaggled
-gaging
-gags
-gagster
-gaiety
-gaijin
-gaily
-gain
-gained
-gainer
-gainers
-gainful
-gainfully
-gaining
-gainly
-gains
-gainsay
-gainsaying
-gait
-gaiter
-gaiters
-gaits
-gal
-gala
-galactic
-galas
-galaxies
-galaxy
-gale
-galena
-gales
-galilean
-galileo
-gall
-gallant
-gallantly
-gallantries
-gallantry
-gallants
-galled
-galleon
-galleons
-galleried
-galleries
-gallery
-galley
-galleys
-gallic
-galling
-gallium
-gallivanted
-gallivanting
-gallon
-gallons
-gallop
-galloped
-galloping
-gallops
-gallows
-galls
-gallstones
-galop
-galore
-galoshes
-gals
-galvanic
-galvanise
-galvanised
-galvanising
-galvanometer
-galvanometric
-gambia
-gambian
-gambit
-gambits
-gamble
-gambled
-gambler
-gamblers
-gambles
-gambling
-gambol
-gambolling
-gambols
-game
-gamed
-gamekeeper
-gamekeepers
-gamely
-gamers
-games
-gamesmanship
-gamesmen
-gamete
-gametes
-gaming
-gamma
-gammon
-gamut
-gamy
-gander
-ganders
-gandhi
-gang
-ganged
-ganger
-gangers
-ganges
-ganging
-gangland
-ganglia
-gangling
-ganglion
-ganglionic
-gangly
-gangplank
-gangrene
-gangrenous
-gangs
-gangster
-gangsterism
-gangsters
-gangway
-gangways
-gannet
-gannets
-gantries
-gantry
-gaol
-gaoled
-gaoler
-gaolers
-gaols
-gap
-gape
-gaped
-gapes
-gaping
-gapingly
-gaps
-garage
-garaged
-garages
-garb
-garbage
-garbed
-garble
-garbled
-garbles
-garbling
-garbs
-garden
-gardener
-gardeners
-gardening
-gardens
-gargantuan
-gargle
-gargled
-gargles
-gargling
-gargoyle
-gargoyles
-garish
-garishly
-garland
-garlanded
-garlands
-garlic
-garment
-garments
-garner
-garnered
-garnering
-garnet
-garnets
-garnish
-garnished
-garnishing
-garotte
-garotted
-garottes
-garotting
-garret
-garrets
-garrison
-garrisoned
-garrisons
-garrotte
-garrotted
-garrottes
-garrotting
-garrulous
-garter
-garters
-gas
-gaseous
-gases
-gash
-gashed
-gashes
-gashing
-gasholder
-gasify
-gasket
-gaskets
-gaslight
-gasometer
-gasp
-gasped
-gasper
-gasping
-gasps
-gassed
-gasses
-gassier
-gassiest
-gassing
-gassy
-gastrectomy
-gastric
-gastritis
-gastroenteritis
-gastrointestinal
-gastronomic
-gastronomy
-gastropod
-gastropods
-gasworks
-gate
-gateau
-gateaus
-gateaux
-gatecrash
-gatecrashed
-gatecrasher
-gatecrashers
-gatecrashing
-gated
-gatehouse
-gatehouses
-gatekeeper
-gatekeepers
-gatepost
-gateposts
-gates
-gateway
-gateways
-gather
-gathered
-gatherer
-gatherers
-gathering
-gatherings
-gathers
-gating
-gauche
-gaucheness
-gaucherie
-gaud
-gaudiest
-gaudily
-gaudiness
-gaudy
-gauge
-gauged
-gauges
-gauging
-gaul
-gauls
-gaunt
-gaunter
-gauntlet
-gauntlets
-gauntly
-gauze
-gave
-gavel
-gavial
-gavials
-gavotte
-gawk
-gawking
-gawky
-gawpin
-gay
-gayest
-gays
-gaze
-gazebo
-gazed
-gazelle
-gazelles
-gazes
-gazette
-gazetteer
-gazettes
-gazing
-gdansk
-gear
-gearbox
-gearboxes
-geared
-gearing
-gears
-gearstick
-gecko
-geek
-geeks
-geese
-geezer
-geiger
-geisha
-geishas
-gel
-gelatin
-gelatine
-gelatinous
-gelding
-geldings
-gelignite
-gelled
-gels
-gem
-gemini
-gemmed
-gems
-gemsbok
-gemstone
-gemstones
-gen
-gender
-gendered
-genderless
-genders
-gene
-genealogical
-genealogies
-genealogist
-genealogy
-genera
-general
-generalisable
-generalisation
-generalisations
-generalise
-generalised
-generalises
-generalising
-generalist
-generalists
-generalities
-generality
-generally
-generals
-generalship
-generate
-generated
-generates
-generating
-generation
-generational
-generations
-generative
-generator
-generators
-generic
-generically
-generosities
-generosity
-generous
-generously
-genes
-genesis
-genetic
-genetically
-geneticist
-geneticists
-genetics
-genets
-geneva
-genial
-geniality
-genially
-genie
-genii
-genital
-genitalia
-genitals
-genitive
-genitives
-genius
-geniuses
-genoa
-genocidal
-genocide
-genome
-genomes
-genomic
-genotype
-genotypes
-genre
-genres
-gent
-genteel
-genteelest
-genteelly
-gentians
-gentile
-gentiles
-gentility
-gentle
-gentlefolk
-gentleman
-gentlemanly
-gentlemen
-gentleness
-gentler
-gentlest
-gentling
-gently
-gentrification
-gentrified
-gentrifying
-gentry
-gents
-genuflect
-genuflections
-genuine
-genuinely
-genuineness
-genus
-geocentric
-geochemical
-geochemistry
-geodesic
-geodesics
-geographer
-geographers
-geographic
-geographical
-geographically
-geography
-geologic
-geological
-geologically
-geologist
-geologists
-geology
-geomagnetic
-geomagnetically
-geomagnetism
-geometer
-geometers
-geometric
-geometrical
-geometrically
-geometries
-geometry
-geomorphological
-geomorphologists
-geomorphology
-geophysical
-geophysicist
-geophysicists
-geophysics
-geopolitical
-george
-georgia
-geoscientific
-geostationary
-geosynchronous
-geothermal
-geranium
-geraniums
-gerbil
-gerbils
-geriatric
-geriatrics
-germ
-german
-germane
-germanic
-germanium
-germans
-germany
-germicidal
-germicides
-germinal
-germinate
-germinated
-germinating
-germination
-germs
-gerontocracy
-gerontologist
-gerontology
-gerrymander
-gerrymandered
-gerund
-gerundive
-gestalt
-gestapo
-gestate
-gestating
-gestation
-gestational
-gesticulate
-gesticulated
-gesticulating
-gesticulation
-gesticulations
-gestural
-gesture
-gestured
-gestures
-gesturing
-get
-getable
-getaway
-getrichquick
-gets
-gettable
-getter
-getting
-geyser
-geysers
-ghana
-ghanian
-ghastlier
-ghastliest
-ghastliness
-ghastly
-gherkin
-gherkins
-ghetto
-ghost
-ghosted
-ghosting
-ghostlier
-ghostliest
-ghostlike
-ghostly
-ghosts
-ghoul
-ghoulish
-ghouls
-giant
-giantess
-giantism
-giantkiller
-giantkillers
-giants
-gibber
-gibbered
-gibbering
-gibberish
-gibbet
-gibbets
-gibbon
-gibbons
-gibbous
-gibed
-gibes
-giblets
-giddier
-giddiest
-giddily
-giddiness
-giddy
-gift
-gifted
-gifting
-gifts
-giftware
-gig
-gigabytes
-gigantic
-gigantically
-gigavolt
-giggle
-giggled
-giggles
-giggling
-giggly
-gigolo
-gilded
-gilders
-gilding
-gilds
-gill
-gillie
-gills
-gilt
-giltedged
-gilts
-gimcrack
-gimlet
-gimlets
-gimmick
-gimmickry
-gimmicks
-gimmicky
-gin
-ginger
-gingerbread
-gingerly
-gingers
-gingery
-gingham
-gingivitis
-gins
-ginseng
-gipsies
-gipsy
-giraffe
-giraffes
-gird
-girded
-girder
-girders
-girding
-girdle
-girdled
-girdles
-girdling
-girl
-girlfriend
-girlfriends
-girlhood
-girlie
-girlish
-girlishly
-girlishness
-girls
-giro
-girt
-girth
-girths
-gist
-give
-giveaway
-given
-giver
-givers
-gives
-giving
-givings
-gizzard
-glace
-glacial
-glacially
-glaciated
-glaciation
-glaciations
-glacier
-glaciers
-glaciological
-glaciologist
-glaciologists
-glaciology
-glad
-gladden
-gladdened
-gladdening
-gladdens
-gladder
-gladdest
-glade
-glades
-gladiator
-gladiatorial
-gladiators
-gladioli
-gladiolus
-gladly
-gladness
-glamorous
-glamour
-glance
-glanced
-glances
-glancing
-gland
-glands
-glandular
-glans
-glare
-glared
-glares
-glaring
-glaringly
-glasgow
-glasnost
-glass
-glassed
-glasses
-glassful
-glasshouse
-glasshouses
-glassier
-glassiest
-glassless
-glassware
-glassy
-glaucoma
-glaucous
-glaze
-glazed
-glazer
-glazes
-glazier
-glaziers
-glazing
-gleam
-gleamed
-gleaming
-gleams
-glean
-gleaned
-gleaning
-gleanings
-gleans
-glebe
-glee
-gleeful
-gleefully
-gleefulness
-glen
-glenn
-glens
-glia
-glib
-glibly
-glibness
-glide
-glided
-glider
-gliders
-glides
-gliding
-glim
-glimmer
-glimmered
-glimmering
-glimmerings
-glimmers
-glimpse
-glimpsed
-glimpses
-glimpsing
-glint
-glinted
-glinting
-glints
-glisten
-glistened
-glistening
-glistens
-glitter
-glittered
-glittering
-glitters
-glittery
-glitzy
-gloaming
-gloat
-gloated
-gloating
-glob
-global
-globalisation
-globally
-globe
-globed
-globes
-globetrotters
-globetrotting
-globose
-globular
-globule
-globules
-gloom
-gloomful
-gloomier
-gloomiest
-gloomily
-gloominess
-glooms
-gloomy
-gloried
-glories
-glorification
-glorified
-glorifies
-glorify
-glorifying
-glorious
-gloriously
-glory
-glorying
-gloss
-glossaries
-glossary
-glossed
-glosses
-glossier
-glossiest
-glossily
-glossing
-glossy
-glottal
-glove
-gloved
-gloves
-glow
-glowed
-glower
-glowered
-glowering
-glowers
-glowing
-glowingly
-glows
-glowworm
-glowworms
-glucose
-glue
-glued
-glueing
-glues
-gluey
-gluing
-glum
-glumly
-gluon
-glut
-glutamate
-gluten
-glutinous
-glutted
-glutton
-gluttonous
-gluttons
-gluttony
-glycerine
-glycerol
-glycine
-glycol
-glyph
-glyphs
-gnarl
-gnarled
-gnarling
-gnarls
-gnash
-gnashed
-gnashes
-gnashing
-gnat
-gnats
-gnaw
-gnawed
-gnawer
-gnawers
-gnawing
-gnaws
-gneiss
-gnome
-gnomes
-gnomic
-gnostic
-gnosticism
-gnu
-gnus
-go
-goad
-goaded
-goading
-goads
-goahead
-goal
-goalies
-goalkeeper
-goalkeepers
-goalkeeping
-goalless
-goalmouth
-goalpost
-goalposts
-goals
-goalscorer
-goalscorers
-goalscoring
-goat
-goatee
-goatees
-goats
-goatskin
-gobbet
-gobbets
-gobble
-gobbled
-gobbledegook
-gobbledygook
-gobbler
-gobbles
-gobbling
-gobetween
-gobi
-gobies
-goblet
-goblets
-goblin
-goblins
-god
-godchild
-goddess
-goddesses
-godfather
-godfathers
-godforsaken
-godhead
-godless
-godlessness
-godlier
-godlike
-godliness
-godly
-godmother
-godmothers
-godparents
-gods
-godsend
-godson
-godsons
-goer
-goers
-goes
-goethe
-gofer
-goggled
-goggles
-goggling
-going
-goings
-goitre
-goitres
-gold
-golden
-goldfish
-golds
-goldsmith
-goldsmiths
-golf
-golfer
-golfers
-golfing
-golgotha
-goliath
-golliwog
-golly
-gonad
-gonads
-gondola
-gondolas
-gondolier
-gondoliers
-gone
-gong
-gongs
-gonorrhoea
-goo
-good
-goodbye
-goodbyes
-goodfornothing
-goodfornothings
-goodhope
-goodhumoured
-goodhumouredly
-goodies
-goodish
-goodlooking
-goodly
-goodnatured
-goodnaturedly
-goodness
-goodnight
-goods
-goodtempered
-goodwill
-goody
-gooey
-goof
-goofed
-goofing
-goofs
-goofy
-googlies
-googly
-goon
-goons
-goose
-gooseberries
-gooseberry
-goosestep
-goosestepping
-gopher
-gophers
-gordian
-gore
-gored
-gores
-gorge
-gorged
-gorgeous
-gorgeously
-gorgeousness
-gorges
-gorging
-gorgon
-gorgons
-gorier
-goriest
-gorilla
-gorillas
-goring
-gormless
-gorse
-gory
-gosh
-gosling
-goslings
-goslow
-goslows
-gospel
-gospels
-gossamer
-gossip
-gossiped
-gossiping
-gossips
-gossipy
-got
-goth
-gothic
-goths
-gotten
-gouda
-gouge
-gouged
-gouges
-gouging
-goulash
-gourd
-gourds
-gourmand
-gourmet
-gourmets
-gout
-govern
-governance
-governed
-governess
-governesses
-governing
-government
-governmental
-governments
-governor
-governors
-governorship
-governorships
-governs
-gown
-gowned
-gowns
-grab
-grabbed
-grabber
-grabbers
-grabbing
-grabs
-grace
-graced
-graceful
-gracefully
-gracefulness
-graceless
-gracelessly
-graces
-gracing
-gracious
-graciously
-graciousness
-gradation
-gradations
-grade
-graded
-grader
-graders
-grades
-gradient
-gradients
-grading
-gradings
-gradual
-gradualism
-gradualist
-gradually
-graduand
-graduands
-graduate
-graduated
-graduates
-graduating
-graduation
-graduations
-graffiti
-graffito
-graft
-grafted
-grafting
-grafts
-graham
-grail
-grails
-grain
-grained
-grainier
-grainiest
-graininess
-grains
-grainy
-gram
-grammar
-grammarian
-grammarians
-grammars
-grammatical
-grammatically
-gramme
-grammes
-gramophone
-gramophones
-grams
-granaries
-granary
-grand
-grandads
-grandchild
-grandchildren
-granddad
-granddaughter
-granddaughters
-grandee
-grandees
-grander
-grandest
-grandeur
-grandfather
-grandfathers
-grandiloquent
-grandiose
-grandiosity
-grandly
-grandma
-grandmas
-grandmaster
-grandmasters
-grandmother
-grandmothers
-grandpa
-grandparent
-grandparents
-grandpas
-grands
-grandson
-grandsons
-grandstand
-grange
-granite
-granites
-granitic
-grannie
-grannies
-granny
-grant
-granted
-grantee
-granting
-grants
-granular
-granularity
-granulated
-granulation
-granule
-granules
-granulocyte
-grape
-grapefruit
-grapes
-grapeshot
-grapevine
-graph
-graphed
-graphic
-graphical
-graphically
-graphics
-graphite
-graphologist
-graphologists
-graphology
-graphs
-grapnel
-grapple
-grappled
-grapples
-grappling
-graptolites
-grasp
-grasped
-grasper
-grasping
-grasps
-grass
-grassed
-grasses
-grasshopper
-grasshoppers
-grassier
-grassiest
-grassland
-grasslands
-grassroots
-grassy
-grate
-grated
-grateful
-gratefully
-grater
-graters
-grates
-graticule
-gratification
-gratifications
-gratified
-gratifies
-gratify
-gratifying
-gratifyingly
-grating
-gratings
-gratis
-gratitude
-gratuities
-gratuitous
-gratuitously
-gratuitousness
-gratuity
-grave
-gravedigger
-gravediggers
-gravel
-gravelled
-gravelly
-gravels
-gravely
-graven
-graver
-graves
-graveside
-gravest
-gravestone
-gravestones
-graveyard
-graveyards
-gravies
-gravitas
-gravitate
-gravitated
-gravitating
-gravitation
-gravitational
-gravitationally
-gravities
-graviton
-gravitons
-gravity
-gravures
-gravy
-graze
-grazed
-grazer
-grazes
-grazing
-grease
-greased
-greasepaint
-greaseproof
-greasers
-greases
-greasier
-greasiest
-greasing
-greasy
-great
-greataunt
-greataunts
-greatcoat
-greatcoats
-greater
-greatest
-greatgrandchildren
-greatgranddaughter
-greatgrandfather
-greatgrandmother
-greatgrandmothers
-greatgrandson
-greatly
-greatness
-grecian
-greece
-greed
-greedier
-greediest
-greedily
-greediness
-greeds
-greedy
-greek
-greeks
-green
-greened
-greener
-greenery
-greenest
-greeneyed
-greenfield
-greenfly
-greengages
-greengrocer
-greengrocers
-greengrocery
-greenhorn
-greenhorns
-greenhouse
-greenhouses
-greenie
-greening
-greenish
-greenly
-greenness
-greens
-greenstone
-greensward
-greenwich
-greet
-greeted
-greeting
-greetings
-greets
-gregarious
-gregariously
-gregariousness
-gremlin
-gremlins
-grenade
-grenades
-grenadier
-grenadiers
-grew
-grey
-greybeard
-greyed
-greyer
-greyest
-greyhound
-greyhounds
-greying
-greyish
-greyness
-greys
-grid
-gridded
-gridiron
-gridlock
-grids
-grief
-griefs
-grievance
-grievances
-grieve
-grieved
-griever
-grievers
-grieves
-grieving
-grievous
-grievously
-griffin
-griffins
-griffon
-grill
-grille
-grilled
-grilles
-grilling
-grills
-grim
-grimace
-grimaced
-grimaces
-grimacing
-grime
-grimiest
-grimly
-grimm
-grimmer
-grimmest
-grimness
-grimy
-grin
-grind
-grinded
-grinder
-grinders
-grinding
-grinds
-grindstone
-grinned
-grinner
-grinning
-grins
-grip
-gripe
-griped
-gripes
-griping
-gripped
-gripper
-grippers
-gripping
-grips
-grislier
-grisliest
-grisly
-grist
-gristle
-grit
-grits
-gritted
-grittier
-grittiest
-gritting
-gritty
-grizzled
-grizzlier
-grizzliest
-grizzly
-groan
-groaned
-groaner
-groaners
-groaning
-groans
-groat
-groats
-grocer
-groceries
-grocers
-grocery
-grog
-groggiest
-groggily
-groggy
-groin
-groins
-grommet
-grommets
-groom
-groomed
-groomer
-groomers
-grooming
-grooms
-groove
-grooved
-grooves
-groovier
-grooving
-groovy
-grope
-groped
-groper
-gropers
-gropes
-groping
-gropingly
-gropings
-gross
-grossed
-grosser
-grossest
-grossly
-grossness
-grotesque
-grotesquely
-grotesqueness
-grotto
-grouch
-grouchy
-ground
-grounded
-grounding
-groundless
-groundnut
-groundnuts
-grounds
-groundsheet
-groundsman
-groundswell
-groundwater
-groundwork
-group
-grouped
-grouper
-groupie
-groupies
-grouping
-groupings
-groups
-grouse
-grouses
-grout
-grouting
-grove
-grovel
-grovelled
-groveller
-grovelling
-grovels
-groves
-grow
-grower
-growers
-growing
-growl
-growled
-growler
-growling
-growls
-grown
-grownup
-grownups
-grows
-growth
-growths
-grub
-grubbed
-grubbier
-grubbiest
-grubbing
-grubby
-grubs
-grudge
-grudges
-grudging
-grudgingly
-gruel
-grueling
-gruelling
-gruesome
-gruesomely
-gruesomeness
-gruff
-gruffly
-gruffness
-grumble
-grumbled
-grumbler
-grumbles
-grumbling
-grumblings
-grumpier
-grumpiest
-grumpily
-grumps
-grumpy
-grunge
-grunt
-grunted
-grunter
-grunting
-grunts
-guacamole
-guanaco
-guanine
-guano
-guarantee
-guaranteed
-guaranteeing
-guarantees
-guarantor
-guarantors
-guard
-guarded
-guardedly
-guardedness
-guardhouse
-guardian
-guardians
-guardianship
-guarding
-guardroom
-guards
-guardsman
-guardsmen
-guava
-guavas
-gubernatorial
-gudgeon
-guerilla
-guerillas
-guerrilla
-guerrillas
-guess
-guessable
-guessed
-guesses
-guessing
-guesswork
-guest
-guesting
-guests
-guffaw
-guffawed
-guffaws
-guidance
-guide
-guidebook
-guidebooks
-guided
-guideline
-guidelines
-guider
-guiders
-guides
-guiding
-guidings
-guild
-guilder
-guilders
-guilds
-guile
-guileless
-guilelessness
-guillemot
-guillemots
-guillotine
-guillotined
-guillotines
-guillotining
-guilt
-guiltier
-guiltiest
-guiltily
-guiltiness
-guiltless
-guilts
-guilty
-guinea
-guineas
-guise
-guises
-guitar
-guitarist
-guitarists
-guitars
-gulf
-gulfs
-gulfwar
-gull
-gullet
-gullets
-gulley
-gulleys
-gullibility
-gullible
-gullies
-gulls
-gully
-gulp
-gulped
-gulping
-gulps
-gum
-gumboil
-gumboils
-gumboots
-gumdrop
-gumdrops
-gummed
-gumming
-gums
-gumshoe
-gumtree
-gumtrees
-gun
-gunboat
-gunboats
-gunfight
-gunfire
-gunfires
-gunite
-gunk
-gunman
-gunmen
-gunmetal
-gunned
-gunner
-gunners
-gunnery
-gunning
-gunpoint
-gunpowder
-guns
-gunship
-gunships
-gunshot
-gunshots
-gunsight
-gunsmith
-gunsmiths
-gunwale
-gunwales
-guppies
-guppy
-gurgle
-gurgled
-gurgles
-gurgling
-guru
-gurus
-gush
-gushed
-gusher
-gushes
-gushing
-gusset
-gust
-gusted
-gustier
-gustiest
-gusting
-gusto
-gusts
-gusty
-gut
-gutless
-guts
-gutsier
-gutsy
-gutted
-gutter
-guttered
-guttering
-gutters
-guttersnipe
-guttersnipes
-gutting
-guttural
-gutturally
-guy
-guys
-guzzle
-guzzled
-guzzler
-guzzlers
-guzzling
-gym
-gymkhana
-gymnasia
-gymnasium
-gymnasiums
-gymnast
-gymnastic
-gymnastics
-gymnasts
-gyms
-gynaecological
-gynaecologist
-gynaecologists
-gynaecology
-gypsies
-gypsum
-gypsy
-gyrate
-gyrated
-gyrates
-gyrating
-gyration
-gyrations
-gyro
-gyromagnetic
-gyroscope
-gyroscopes
-gyroscopic
-ha
-haberdasher
-haberdashers
-haberdashery
-habit
-habitability
-habitable
-habitat
-habitation
-habitations
-habitats
-habitforming
-habits
-habitual
-habitually
-habituate
-habituated
-habituation
-hacienda
-hack
-hackable
-hacked
-hacker
-hackers
-hacking
-hackle
-hackles
-hackling
-hackney
-hackneyed
-hacks
-hacksaw
-had
-haddock
-haddocks
-hades
-hadnt
-hadron
-hadrons
-haematological
-haematologist
-haematology
-haematoma
-haematuria
-haemoglobin
-haemolytic
-haemophilia
-haemophiliac
-haemophiliacs
-haemorrhage
-haemorrhages
-haemorrhagic
-haemorrhaging
-haemorrhoid
-haemorrhoids
-haft
-hafts
-hag
-haggard
-haggardness
-haggis
-haggle
-haggled
-haggler
-haggling
-hagiography
-hags
-haha
-haiku
-hail
-hailed
-hailing
-hails
-hailstone
-hailstones
-hailstorm
-hailstorms
-hair
-hairbrush
-haircare
-haircut
-haircuts
-hairdo
-hairdresser
-hairdressers
-hairdressing
-haired
-hairier
-hairiest
-hairiness
-hairless
-hairline
-hairnet
-hairpiece
-hairpin
-hairpins
-hairraising
-hairs
-hairsplitting
-hairspray
-hairsprays
-hairstyle
-hairstyles
-hairstyling
-hairy
-haiti
-haitian
-hake
-hakea
-hale
-half
-halfhearted
-halfheartedly
-halfheartedness
-halfhour
-halfhourly
-halfhours
-halfsister
-halftruth
-halftruths
-halfway
-halibut
-halifax
-halite
-halitosis
-hall
-hallelujah
-hallmark
-hallmarks
-hallo
-hallow
-hallowed
-hallows
-halls
-hallucinate
-hallucinated
-hallucinating
-hallucination
-hallucinations
-hallucinatory
-hallway
-hallways
-halo
-haloed
-halogen
-halogenated
-halogens
-halon
-halons
-halt
-halted
-halter
-haltered
-halters
-halting
-haltingly
-halts
-halve
-halved
-halves
-halving
-ham
-hamburg
-hamburger
-hamburgers
-hamitic
-hamlet
-hamlets
-hammer
-hammered
-hammerhead
-hammering
-hammers
-hammock
-hammocks
-hamper
-hampered
-hampering
-hampers
-hams
-hamster
-hamsters
-hamstring
-hamstrings
-hamstrung
-hand
-handbag
-handbags
-handball
-handbasin
-handbell
-handbill
-handbills
-handbook
-handbooks
-handbrake
-handbrakes
-handcar
-handcart
-handcuff
-handcuffed
-handcuffing
-handcuffs
-handed
-handedness
-handel
-handful
-handfuls
-handgun
-handguns
-handhold
-handholds
-handicap
-handicapped
-handicapping
-handicaps
-handicraft
-handicrafts
-handier
-handiest
-handily
-handing
-handiwork
-handkerchief
-handkerchiefs
-handle
-handlebar
-handlebars
-handled
-handler
-handlers
-handles
-handling
-handmade
-handmaiden
-handmaidens
-handout
-handouts
-handover
-handovers
-handpicked
-handrail
-handrails
-hands
-handset
-handsets
-handshake
-handshakes
-handshaking
-handsome
-handsomely
-handsomeness
-handsomer
-handsomest
-handstand
-handstands
-handwriting
-handwritten
-handy
-handyman
-handymen
-hang
-hangar
-hangars
-hangdog
-hanged
-hanger
-hangers
-hangglide
-hangglided
-hangglider
-hanggliders
-hangglides
-hanggliding
-hanging
-hangings
-hangman
-hangmen
-hangouts
-hangover
-hangovers
-hangs
-hangup
-hanker
-hankered
-hankering
-hankers
-hankie
-hankies
-hanoi
-hanover
-hansard
-hansom
-haphazard
-haphazardly
-hapless
-happen
-happened
-happening
-happenings
-happens
-happier
-happiest
-happily
-happiness
-happy
-happygolucky
-harangue
-harangued
-harangues
-haranguing
-harare
-harass
-harassed
-harassers
-harasses
-harassing
-harassment
-harbinger
-harbingers
-harbour
-harboured
-harbouring
-harbours
-hard
-hardback
-hardbacks
-hardboard
-hardboiled
-hardcore
-hardearned
-harden
-hardened
-hardener
-hardeners
-hardening
-hardens
-harder
-hardest
-hardheaded
-hardhearted
-hardheartedness
-hardhit
-hardhitting
-hardier
-hardiest
-hardily
-hardiness
-hardline
-hardliner
-hardliners
-hardly
-hardness
-hardpressed
-hardship
-hardships
-hardup
-hardware
-hardwood
-hardwoods
-hardworking
-hardy
-hare
-harebell
-harebells
-harebrained
-hared
-harem
-harems
-hares
-hark
-harked
-harken
-harkened
-harkens
-harking
-harks
-harlequin
-harlequins
-harlot
-harlots
-harm
-harmed
-harmer
-harmful
-harmfully
-harmfulness
-harming
-harmless
-harmlessly
-harmlessness
-harmonic
-harmonica
-harmonically
-harmonics
-harmonies
-harmonious
-harmoniously
-harmonisation
-harmonise
-harmonised
-harmonising
-harmonium
-harmony
-harms
-harness
-harnessed
-harnesses
-harnessing
-harp
-harped
-harping
-harpist
-harpists
-harpoon
-harpoons
-harps
-harpsichord
-harpsichords
-harridan
-harried
-harrier
-harriers
-harrow
-harrowed
-harrowing
-harrows
-harry
-harrying
-harsh
-harshen
-harshens
-harsher
-harshest
-harshly
-harshness
-hart
-harts
-harvard
-harvest
-harvested
-harvester
-harvesters
-harvesting
-harvests
-has
-hasbeen
-hasbeens
-hash
-hashed
-hashes
-hashing
-hashish
-hasnt
-hasp
-hassle
-haste
-hasted
-hasten
-hastened
-hastening
-hastens
-hastes
-hastier
-hastiest
-hastily
-hastiness
-hasty
-hat
-hatch
-hatchback
-hatchbacks
-hatched
-hatcheries
-hatchery
-hatches
-hatchet
-hatchets
-hatching
-hatchway
-hate
-hated
-hateful
-hatefully
-hater
-haters
-hates
-hatful
-hating
-hatless
-hatrack
-hatracks
-hatred
-hatreds
-hats
-hatstands
-hatted
-hatter
-hatters
-hattrick
-hattricks
-haughtier
-haughtiest
-haughtily
-haughtiness
-haughty
-haul
-haulage
-haulages
-hauled
-hauler
-haulers
-haulier
-hauliers
-hauling
-haulms
-hauls
-haunch
-haunches
-haunt
-haunted
-haunting
-hauntingly
-haunts
-hauteur
-havana
-have
-haven
-havenots
-havens
-havent
-havering
-haversack
-haves
-having
-havoc
-hawaii
-hawaiian
-hawk
-hawked
-hawker
-hawkers
-hawking
-hawkish
-hawks
-hawser
-hawsers
-hawthorn
-hawthorns
-hay
-haydn
-hayfever
-hayfield
-hayloft
-haystack
-haystacks
-haywain
-haywire
-hazard
-hazarded
-hazarding
-hazardous
-hazards
-haze
-hazel
-hazelnut
-hazelnuts
-hazier
-haziest
-hazily
-haziness
-hazy
-he
-head
-headache
-headaches
-headband
-headbands
-headboard
-headboards
-headcount
-headdress
-headdresses
-headed
-header
-headers
-headfast
-headgear
-headhunted
-headhunters
-headier
-headiest
-heading
-headings
-headlamp
-headlamps
-headland
-headlands
-headless
-headlight
-headlights
-headline
-headlined
-headlines
-headlining
-headlock
-headlong
-headman
-headmaster
-headmasters
-headmastership
-headmen
-headmistress
-headmistresses
-headnote
-headon
-headphone
-headphones
-headpiece
-headquarters
-headrest
-headroom
-heads
-headscarf
-headscarves
-headset
-headsets
-headship
-headstand
-headstock
-headstone
-headstones
-headstrong
-headwaters
-headway
-headwind
-headwinds
-headword
-headwords
-headwork
-heady
-heal
-healed
-healer
-healers
-healing
-heals
-health
-healthful
-healthier
-healthiest
-healthily
-healthiness
-healths
-healthy
-heap
-heaped
-heaping
-heaps
-hear
-hearable
-heard
-hearer
-hearers
-hearing
-hearings
-hearken
-hearkened
-hearkening
-hearkens
-hears
-hearsay
-hearse
-hearses
-heart
-heartache
-heartbeat
-heartbeats
-heartbreak
-heartbreaking
-heartbreaks
-heartbroken
-heartburn
-hearten
-heartened
-heartening
-heartfelt
-hearth
-hearthrug
-hearths
-hearties
-heartiest
-heartily
-heartiness
-heartland
-heartlands
-heartless
-heartlessly
-heartlessness
-heartrending
-hearts
-heartsearching
-heartstrings
-hearttoheart
-heartwarming
-heartwood
-hearty
-heat
-heated
-heatedly
-heater
-heaters
-heath
-heathen
-heathenish
-heathenism
-heathens
-heather
-heathers
-heathery
-heathland
-heaths
-heating
-heatresistant
-heats
-heatwave
-heave
-heaved
-heaveho
-heaven
-heavenly
-heavens
-heavensent
-heavenward
-heavenwards
-heaves
-heavier
-heavies
-heaviest
-heavily
-heaviness
-heaving
-heavings
-heavy
-heavyduty
-heavyweight
-heavyweights
-hebrew
-hebrews
-heck
-heckle
-heckled
-heckler
-hecklers
-heckles
-heckling
-hectare
-hectares
-hectic
-hectically
-hectolitres
-hector
-hectoring
-hedge
-hedged
-hedgehog
-hedgehogs
-hedgerow
-hedgerows
-hedges
-hedging
-hedonism
-hedonist
-hedonistic
-hedonists
-heed
-heeded
-heedful
-heeding
-heedless
-heedlessly
-heedlessness
-heeds
-heel
-heeled
-heels
-heft
-hefted
-heftier
-hefting
-hefty
-hegemonic
-hegemony
-heifer
-heifers
-height
-heighten
-heightened
-heightening
-heightens
-heights
-heinous
-heir
-heiress
-heiresses
-heirloom
-heirlooms
-heirs
-heist
-heists
-held
-helen
-helical
-helices
-helicopter
-helicopters
-heliocentric
-heliography
-heliosphere
-heliotrope
-helipad
-helium
-helix
-helixes
-hell
-hellenic
-hellfire
-hellish
-hellishly
-hello
-hellraiser
-hells
-helm
-helmet
-helmeted
-helmets
-helms
-helmsman
-helots
-help
-helped
-helper
-helpers
-helpful
-helpfully
-helpfulness
-helping
-helpings
-helpless
-helplessly
-helplessness
-helpline
-helplines
-helpmate
-helpmates
-helps
-helsinki
-helterskelter
-hem
-heman
-hemen
-hemisphere
-hemispheres
-hemispheric
-hemispherical
-hemline
-hemlines
-hemlock
-hemmed
-hemming
-hemp
-hems
-hen
-hence
-henceforth
-henceforward
-henchman
-henchmen
-henge
-henna
-henpeck
-henry
-hens
-hepatic
-hepatitis
-heptagon
-heptagonal
-heptagons
-heptane
-her
-herald
-heralded
-heraldic
-heralding
-heraldry
-heralds
-herb
-herbaceous
-herbage
-herbal
-herbalism
-herbalist
-herbalists
-herbicide
-herbicides
-herbivore
-herbivores
-herbivorous
-herbs
-herd
-herded
-herding
-herds
-herdsman
-herdsmen
-here
-hereabouts
-hereafter
-hereby
-hereditary
-heredity
-herein
-hereinafter
-hereof
-heresies
-heresy
-heretic
-heretical
-heretics
-hereto
-heretofore
-hereunder
-hereupon
-herewith
-heritability
-heritable
-heritage
-heritors
-herm
-hermaphrodite
-hermaphrodites
-hermaphroditic
-hermeneutic
-hermeneutics
-hermetic
-hermetically
-hermit
-hermitage
-hermits
-hernia
-hernias
-hero
-herod
-heroic
-heroical
-heroically
-heroics
-heroin
-heroine
-heroines
-heroism
-heron
-heronry
-herons
-herpes
-herring
-herringbone
-herrings
-hers
-herself
-hertz
-hesitancy
-hesitant
-hesitantly
-hesitate
-hesitated
-hesitates
-hesitating
-hesitatingly
-hesitation
-hesitations
-heterodox
-heterodoxy
-heterogeneity
-heterogeneous
-heterologous
-heterosexist
-heterosexual
-heterosexuality
-heterosexually
-heterosexuals
-heterozygous
-heuristic
-heuristically
-heuristics
-hew
-hewed
-hewer
-hewing
-hewn
-hex
-hexadecimal
-hexagon
-hexagonal
-hexagons
-hexagram
-hexagrams
-hexameter
-hexane
-hexed
-hey
-heyday
-heydays
-hi
-hiatus
-hiatuses
-hibernal
-hibernate
-hibernating
-hibernation
-hibiscus
-hic
-hiccough
-hiccup
-hiccups
-hickory
-hid
-hidden
-hide
-hideandseek
-hideaway
-hideaways
-hidebound
-hideous
-hideously
-hideousness
-hideout
-hideouts
-hider
-hides
-hiding
-hidings
-hierarch
-hierarchic
-hierarchical
-hierarchically
-hierarchies
-hierarchy
-hieratic
-hieroglyph
-hieroglyphic
-hieroglyphics
-hieroglyphs
-higgledypiggledy
-high
-highbrow
-higher
-highest
-highhandedness
-highheeled
-highish
-highjack
-highland
-highlander
-highlanders
-highlands
-highlight
-highlighted
-highlighter
-highlighting
-highlights
-highly
-highness
-highpitched
-highpoint
-highranking
-highs
-highspirited
-hight
-highway
-highwayman
-highwaymen
-highways
-hijack
-hijacked
-hijacker
-hijackers
-hijacking
-hijackings
-hijacks
-hike
-hiked
-hiker
-hikers
-hikes
-hiking
-hilarious
-hilariously
-hilarity
-hill
-hilled
-hillier
-hilliest
-hillman
-hillock
-hillocks
-hillocky
-hills
-hillside
-hillsides
-hilltop
-hilltops
-hillwalking
-hilly
-hilt
-hilts
-him
-himself
-hind
-hindbrain
-hinder
-hindered
-hinderer
-hindering
-hinders
-hindmost
-hindquarters
-hindrance
-hindrances
-hindsight
-hindu
-hinduism
-hinge
-hinged
-hinges
-hinnies
-hinny
-hint
-hinted
-hinterland
-hinterlands
-hinting
-hints
-hip
-hipbone
-hippie
-hippies
-hippo
-hippocampus
-hippodrome
-hippopotamus
-hippy
-hips
-hipster
-hipsters
-hire
-hired
-hireling
-hirer
-hires
-hiring
-hirings
-hirsute
-hirsuteness
-his
-hispanic
-hiss
-hissed
-hisses
-hissing
-hissings
-histamine
-histogram
-histograms
-histological
-histologically
-histologists
-histology
-historian
-historians
-historic
-historical
-historically
-historicist
-histories
-historiographical
-historiography
-history
-histrionic
-histrionics
-hit
-hitandrun
-hitch
-hitched
-hitcher
-hitches
-hitchhike
-hitchhiked
-hitchhiker
-hitchhikers
-hitchhiking
-hitching
-hither
-hitherto
-hitler
-hits
-hittable
-hitters
-hitting
-hive
-hived
-hives
-hiving
-hmm
-ho
-hoar
-hoard
-hoarded
-hoarder
-hoarders
-hoarding
-hoardings
-hoards
-hoarfrost
-hoarse
-hoarsely
-hoarseness
-hoarser
-hoary
-hoax
-hoaxed
-hoaxer
-hoaxers
-hoaxes
-hoaxing
-hob
-hobbies
-hobbit
-hobble
-hobbled
-hobbles
-hobbling
-hobby
-hobbyist
-hobbyists
-hobgoblin
-hobgoblins
-hobnailed
-hobnails
-hobo
-hobs
-hock
-hockey
-hocks
-hocus
-hocuspocus
-hod
-hoe
-hoed
-hoeing
-hoes
-hog
-hogg
-hogged
-hogger
-hogging
-hoggs
-hogs
-hogwash
-hoist
-hoisted
-hoisting
-hoists
-hold
-holdable
-holdall
-holdalls
-holder
-holders
-holding
-holdings
-holdout
-holds
-holdup
-holdups
-hole
-holed
-holeinone
-holes
-holiday
-holidaying
-holidaymaker
-holidaymakers
-holidays
-holier
-holies
-holiest
-holily
-holiness
-holing
-holism
-holistic
-holistically
-holland
-holler
-hollered
-hollies
-hollow
-hollowed
-hollowly
-hollowness
-hollows
-holly
-hollyhocks
-holmes
-holocaust
-holocausts
-hologram
-holograms
-holographic
-holography
-holster
-holsters
-holy
-homage
-homages
-hombre
-home
-homecoming
-homecomings
-homed
-homeland
-homelands
-homeless
-homelessness
-homelier
-homeliness
-homely
-homemade
-homeowner
-homeowners
-homes
-homesick
-homesickness
-homespun
-homestead
-homesteads
-homeward
-homewardbound
-homewards
-homework
-homicidal
-homicide
-homicides
-homiest
-homilies
-homily
-homing
-hominid
-hominids
-homoeopathic
-homoeopathy
-homogenates
-homogeneity
-homogeneous
-homogeneously
-homogenisation
-homogenise
-homogenised
-homogenising
-homological
-homologies
-homologous
-homologue
-homologues
-homology
-homomorphism
-homomorphisms
-homonym
-homonyms
-homophobes
-homophobia
-homophobic
-homophones
-homophony
-homosexual
-homosexuality
-homosexually
-homosexuals
-homotopy
-homozygous
-homunculus
-homy
-hone
-honed
-hones
-honest
-honestly
-honesty
-honey
-honeybee
-honeycomb
-honeycombed
-honeycombing
-honeydew
-honeyed
-honeymoon
-honeymooners
-honeymoons
-honeysuckle
-honeysuckles
-honing
-honk
-honking
-honks
-honorarium
-honorary
-honorific
-honors
-honour
-honourable
-honourably
-honoured
-honouring
-honours
-honshu
-hood
-hooded
-hoodlum
-hoodlums
-hoods
-hoodwink
-hoodwinked
-hoodwinking
-hoof
-hoofs
-hook
-hookah
-hooked
-hooker
-hookers
-hooking
-hooknosed
-hooks
-hooky
-hooligan
-hooliganism
-hooligans
-hoop
-hooped
-hoops
-hooray
-hoot
-hooted
-hooter
-hooters
-hooting
-hoots
-hoover
-hoovered
-hoovering
-hooves
-hop
-hope
-hoped
-hopeful
-hopefully
-hopefulness
-hopefuls
-hopeless
-hopelessly
-hopelessness
-hopes
-hoping
-hopped
-hopper
-hoppers
-hopping
-hops
-horde
-hordes
-horizon
-horizons
-horizontal
-horizontally
-horizontals
-hormonal
-hormonally
-hormone
-hormones
-horn
-hornbeam
-hornbills
-horned
-hornet
-hornets
-hornpipe
-hornpipes
-horns
-horny
-horoscope
-horoscopes
-horrendous
-horrendously
-horrible
-horribly
-horrid
-horridly
-horrific
-horrifically
-horrified
-horrifies
-horrify
-horrifying
-horrifyingly
-horror
-horrors
-horrorstricken
-horse
-horseback
-horsebox
-horseflesh
-horsefly
-horsehair
-horseless
-horseman
-horsemen
-horseplay
-horsepower
-horseradish
-horses
-horseshoe
-horseshoes
-horsewhip
-horsewhipped
-horsey
-horsing
-horticultural
-horticulture
-horticulturist
-horticulturists
-hosanna
-hosannas
-hose
-hosed
-hosepipe
-hoses
-hosier
-hosiery
-hosing
-hospice
-hospices
-hospitable
-hospitably
-hospital
-hospitalisation
-hospitalised
-hospitality
-hospitals
-host
-hosta
-hostage
-hostages
-hosted
-hostel
-hostelries
-hostelry
-hostels
-hostess
-hostesses
-hostile
-hostilely
-hostilities
-hostility
-hosting
-hostler
-hosts
-hot
-hotair
-hotbed
-hotbeds
-hotblooded
-hotchpotch
-hotdog
-hotdogs
-hotel
-hotelier
-hoteliers
-hotels
-hotheaded
-hotheads
-hothouse
-hothouses
-hotline
-hotly
-hotness
-hotplate
-hotplates
-hotpot
-hotrod
-hotspot
-hotspots
-hottempered
-hotter
-hottest
-hotting
-hound
-hounded
-hounding
-hounds
-hour
-hourglass
-hourly
-hours
-house
-houseboat
-houseboats
-housebound
-housebreaker
-housebreakers
-housebreaking
-housebuilder
-housebuilders
-housebuilding
-housebuyers
-housed
-houseflies
-houseful
-household
-householder
-householders
-households
-househunting
-housekeeper
-housekeepers
-housekeeping
-housemaid
-housemaids
-houseroom
-houses
-housewife
-housewives
-housework
-housing
-housings
-houston
-hove
-hovel
-hovels
-hover
-hovercraft
-hovered
-hoverer
-hovering
-hovers
-how
-howdy
-however
-howitzer
-howitzers
-howl
-howled
-howler
-howlers
-howling
-howlings
-howls
-howsoever
-hub
-hubbies
-hubbub
-hubby
-hubcap
-hubcaps
-hubris
-hubristic
-hubs
-huckleberry
-huddle
-huddled
-huddles
-huddling
-hue
-hues
-huff
-huffed
-huffily
-huffing
-huffy
-hug
-huge
-hugely
-hugeness
-hugged
-hugging
-hugs
-huguenot
-huh
-hulk
-hulking
-hulks
-hull
-hullabaloo
-hulled
-hullo
-hulls
-hum
-human
-humane
-humanely
-humaner
-humanise
-humanised
-humanising
-humanism
-humanist
-humanistic
-humanists
-humanitarian
-humanitarianism
-humanities
-humanity
-humankind
-humanly
-humanness
-humanoid
-humanoids
-humans
-humble
-humbled
-humbleness
-humbler
-humbles
-humblest
-humbling
-humbly
-humbug
-humbugs
-humdrum
-humerus
-humid
-humidifier
-humidifiers
-humidity
-humify
-humiliate
-humiliated
-humiliates
-humiliating
-humiliatingly
-humiliation
-humiliations
-humility
-hummable
-hummed
-hummer
-humming
-hummingbird
-hummingbirds
-hummock
-hummocks
-hummocky
-humorist
-humorous
-humorously
-humour
-humoured
-humouring
-humourless
-humours
-hump
-humpback
-humped
-humping
-humps
-hums
-humus
-hunch
-hunchback
-hunchbacked
-hunched
-hunches
-hunching
-hundred
-hundredfold
-hundreds
-hundredth
-hundredths
-hundredweight
-hundredweights
-hung
-hungary
-hunger
-hungered
-hungering
-hungers
-hungrier
-hungriest
-hungrily
-hungry
-hunk
-hunkers
-hunks
-hunt
-hunted
-hunter
-huntergatherer
-huntergatherers
-hunters
-hunting
-hunts
-huntsman
-huntsmen
-hurdle
-hurdled
-hurdler
-hurdlers
-hurdles
-hurl
-hurled
-hurling
-hurls
-hurlyburly
-hurrah
-hurrahs
-hurray
-hurricane
-hurricanes
-hurried
-hurriedly
-hurries
-hurry
-hurrying
-hurt
-hurtful
-hurting
-hurtle
-hurtled
-hurtles
-hurtling
-hurts
-husband
-husbandman
-husbandmen
-husbandry
-husbands
-hush
-hushed
-hushes
-hushhush
-hushing
-husk
-husked
-huskier
-huskies
-huskiest
-huskily
-husks
-husky
-hussies
-hussy
-hustings
-hustle
-hustled
-hustler
-hustlers
-hustles
-hustling
-hut
-hutch
-hutches
-huts
-hyacinth
-hyacinths
-hyaena
-hyaenas
-hybrid
-hybridisation
-hybridised
-hybrids
-hydra
-hydrangea
-hydrangeas
-hydrant
-hydrants
-hydrate
-hydrated
-hydration
-hydraulic
-hydraulically
-hydraulics
-hydrazine
-hydride
-hydro
-hydrocarbon
-hydrocarbons
-hydrochloric
-hydrochloride
-hydrodynamic
-hydrodynamical
-hydrodynamics
-hydroelectric
-hydroelectricity
-hydrofluoric
-hydrofoil
-hydrofoils
-hydrogen
-hydrogenated
-hydrogenation
-hydrographer
-hydrographic
-hydrological
-hydrologically
-hydrologists
-hydrology
-hydrolysis
-hydromagnetic
-hydromechanics
-hydrophobia
-hydrophobic
-hydroponically
-hydrosphere
-hydrostatic
-hydrostatics
-hydrothermal
-hydrous
-hydroxide
-hydroxides
-hyena
-hyenas
-hygiene
-hygienic
-hygienically
-hygienist
-hygienists
-hygroscopic
-hymen
-hymens
-hymn
-hymnal
-hymnbook
-hymns
-hype
-hyperactive
-hyperactivity
-hyperbola
-hyperbolas
-hyperbole
-hyperbolic
-hyperboloid
-hyperboloids
-hypercholesterolaemia
-hypercube
-hypercubes
-hyperfine
-hyperinflation
-hypermarket
-hypermarkets
-hyperplane
-hyperplanes
-hypersensitive
-hypersensitiveness
-hypersensitivity
-hypersonic
-hyperspace
-hypersphere
-hypertension
-hypertext
-hypertonic
-hyperventilated
-hyperventilating
-hyperventilation
-hyphen
-hyphenate
-hyphenated
-hyphenates
-hyphenating
-hyphenation
-hyphenations
-hyphened
-hyphens
-hypnosis
-hypnotherapists
-hypnotherapy
-hypnotic
-hypnotically
-hypnotise
-hypnotised
-hypnotises
-hypnotising
-hypnotism
-hypnotist
-hypochondria
-hypochondriac
-hypochondriacal
-hypochondriacs
-hypocrisies
-hypocrisy
-hypocrite
-hypocrites
-hypocritical
-hypocritically
-hypodermic
-hypoglycaemia
-hypoglycaemic
-hypotension
-hypothalamus
-hypothermia
-hypotheses
-hypothesis
-hypothesise
-hypothesised
-hypothesiser
-hypothesises
-hypothesising
-hypothetical
-hypothetically
-hypoxia
-hyssop
-hysterectomy
-hysteresis
-hysteria
-hysteric
-hysterical
-hysterically
-hysterics
-iambic
-iambus
-iatrogenic
-iberia
-iberian
-ibex
-ibexes
-ibis
-ibises
-ibsen
-icarus
-ice
-iceage
-iceberg
-icebergs
-icebox
-icecap
-icecold
-icecream
-iced
-iceland
-iceman
-icepack
-icepick
-icepicks
-ices
-iceskate
-iceskating
-ichneumon
-icicle
-icicles
-icier
-iciest
-icily
-iciness
-icing
-icings
-icon
-iconic
-iconoclasm
-iconoclast
-iconoclastic
-iconoclasts
-iconographic
-iconographical
-iconography
-icons
-icosahedra
-icosahedral
-icosahedron
-icy
-id
-idaho
-idea
-ideal
-idealisation
-idealisations
-idealise
-idealised
-idealises
-idealising
-idealism
-idealist
-idealistic
-idealistically
-idealists
-ideality
-ideally
-ideals
-ideas
-idem
-identical
-identically
-identifiable
-identifiably
-identification
-identifications
-identified
-identifier
-identifiers
-identifies
-identify
-identifying
-identities
-identity
-ideograms
-ideographic
-ideographs
-ideological
-ideologically
-ideologies
-ideologist
-ideologists
-ideologue
-ideologues
-ideology
-ides
-idiocies
-idiocy
-idiolect
-idiom
-idiomatic
-idiomatically
-idioms
-idiopathic
-idiosyncrasies
-idiosyncrasy
-idiosyncratic
-idiosyncratically
-idiot
-idiotic
-idiotically
-idiots
-idle
-idled
-idleness
-idler
-idlers
-idles
-idlest
-idling
-idly
-idol
-idolaters
-idolatrous
-idolatry
-idolisation
-idolise
-idolised
-idols
-ids
-idyll
-idyllic
-idyllically
-if
-ifs
-igloo
-igloos
-iglu
-igneous
-ignite
-ignited
-igniter
-ignites
-igniting
-ignition
-ignoble
-ignobly
-ignominious
-ignominiously
-ignominy
-ignorable
-ignoramus
-ignoramuses
-ignorance
-ignorant
-ignorantly
-ignore
-ignored
-ignores
-ignoring
-iguana
-iguanas
-ileum
-iliad
-ilk
-ill
-illadvised
-illbehaved
-illconceived
-illdefined
-illegal
-illegalities
-illegality
-illegally
-illegibility
-illegible
-illegibly
-illegitimacy
-illegitimate
-illegitimately
-illequipped
-illfated
-illfavoured
-illhumoured
-illiberal
-illicit
-illicitly
-illimitable
-illinformed
-illinois
-illiquid
-illiteracy
-illiterate
-illiterates
-illmannered
-illness
-illnesses
-illogic
-illogical
-illogicality
-illogically
-ills
-illtempered
-illtreated
-illuminant
-illuminate
-illuminated
-illuminates
-illuminating
-illumination
-illuminations
-illumine
-illusion
-illusionist
-illusionists
-illusions
-illusive
-illusory
-illustrate
-illustrated
-illustrates
-illustrating
-illustration
-illustrations
-illustrative
-illustrator
-illustrators
-illustrious
-ilmenite
-im
-image
-imaged
-imagery
-images
-imaginable
-imaginary
-imagination
-imaginations
-imaginative
-imaginatively
-imagine
-imagined
-imagines
-imaging
-imagining
-imaginings
-imago
-imam
-imams
-imbalance
-imbalanced
-imbalances
-imbecile
-imbeciles
-imbecilic
-imbecilities
-imbecility
-imbedded
-imbeds
-imbibe
-imbibed
-imbiber
-imbibers
-imbibing
-imbroglio
-imbue
-imbued
-imitate
-imitated
-imitates
-imitating
-imitation
-imitations
-imitative
-imitator
-imitators
-immaculate
-immaculately
-immanence
-immanent
-immanently
-immaterial
-immature
-immaturely
-immaturity
-immeasurable
-immeasurably
-immediacy
-immediate
-immediately
-immediateness
-immemorial
-immense
-immensely
-immenseness
-immensities
-immensity
-immerse
-immersed
-immerses
-immersing
-immersion
-immigrant
-immigrants
-immigrate
-immigrated
-immigrating
-immigration
-immigrations
-imminence
-imminent
-imminently
-immiscible
-immobile
-immobilisation
-immobilise
-immobilised
-immobiliser
-immobilises
-immobilising
-immobility
-immoderate
-immoderately
-immodest
-immolate
-immolated
-immolation
-immoral
-immorality
-immorally
-immortal
-immortalised
-immortality
-immortally
-immortals
-immovability
-immovable
-immoveable
-immune
-immunisation
-immunisations
-immunise
-immunised
-immunises
-immunities
-immunity
-immunoassay
-immunocompromised
-immunodeficiency
-immunological
-immunologically
-immunologist
-immunologists
-immunology
-immunosuppression
-immunosuppressive
-immured
-immutability
-immutable
-immutably
-imp
-impact
-impacted
-impacting
-impaction
-impacts
-impair
-impaired
-impairing
-impairment
-impairments
-impairs
-impala
-impalas
-impale
-impaled
-impaler
-impales
-impaling
-impalpable
-impart
-imparted
-impartial
-impartiality
-impartially
-imparting
-imparts
-impassable
-impasse
-impassioned
-impassive
-impassively
-impassiveness
-impassivity
-impatience
-impatient
-impatiently
-impeach
-impeached
-impeaches
-impeachment
-impeachments
-impeccable
-impeccably
-impecunious
-impedance
-impede
-impeded
-impedes
-impediment
-impedimenta
-impediments
-impeding
-impel
-impelled
-impelling
-impels
-impend
-impending
-impenetrability
-impenetrable
-impenetrably
-imperative
-imperatively
-imperatives
-imperceptible
-imperceptibly
-imperfect
-imperfection
-imperfections
-imperfectly
-imperial
-imperialism
-imperialist
-imperialistic
-imperialists
-imperially
-imperil
-imperilled
-imperious
-imperiously
-imperiousness
-imperishable
-imperium
-impermanence
-impermanent
-impermeability
-impermeable
-impermissible
-impersonal
-impersonality
-impersonally
-impersonate
-impersonated
-impersonates
-impersonating
-impersonation
-impersonations
-impersonator
-impersonators
-impertinence
-impertinent
-impertinently
-imperturbability
-imperturbable
-imperturbably
-impervious
-impetuosity
-impetuous
-impetuously
-impetus
-impi
-impiety
-impinge
-impinged
-impingement
-impinges
-impinging
-impious
-impish
-impishly
-impishness
-implacable
-implacably
-implant
-implantation
-implanted
-implanting
-implants
-implausibility
-implausible
-implausibly
-implement
-implementable
-implementation
-implementations
-implemented
-implementer
-implementers
-implementing
-implements
-implicate
-implicated
-implicates
-implicating
-implication
-implications
-implicit
-implicitly
-implied
-impliedly
-implies
-implode
-imploded
-implodes
-imploding
-implore
-implored
-implores
-imploring
-imploringly
-implosion
-imply
-implying
-impolite
-impoliteness
-impolitic
-imponderable
-imponderables
-import
-importable
-importance
-important
-importantly
-importation
-imported
-importer
-importers
-importing
-imports
-importunate
-importunately
-importune
-importuned
-importunity
-imposable
-impose
-imposed
-imposes
-imposing
-imposition
-impositions
-impossibilities
-impossibility
-impossible
-impossibly
-imposter
-imposters
-impostor
-impostors
-impotence
-impotency
-impotent
-impotently
-impound
-impounded
-impounding
-impoverish
-impoverished
-impoverishing
-impoverishment
-impracticability
-impracticable
-impractical
-impracticalities
-impracticality
-impractically
-imprecation
-imprecations
-imprecise
-imprecisely
-impreciseness
-imprecision
-impregnable
-impregnably
-impregnate
-impregnated
-impregnating
-impregnation
-impresario
-impress
-impressed
-impresses
-impressing
-impression
-impressionable
-impressionism
-impressionist
-impressionistic
-impressionists
-impressions
-impressive
-impressively
-impressiveness
-imprimatur
-imprint
-imprinted
-imprinting
-imprints
-imprison
-imprisoned
-imprisoning
-imprisonment
-imprisonments
-imprisons
-improbabilities
-improbability
-improbable
-improbably
-impromptu
-improper
-improperly
-improprieties
-impropriety
-improvable
-improve
-improved
-improvement
-improvements
-improver
-improves
-improvidence
-improvident
-improving
-improvisation
-improvisational
-improvisations
-improvisatory
-improvise
-improvised
-improvises
-improvising
-imprudence
-imprudent
-imprudently
-imps
-impudence
-impudent
-impudently
-impugn
-impugnable
-impugned
-impugning
-impulse
-impulses
-impulsion
-impulsive
-impulsively
-impulsiveness
-impunity
-impure
-impurities
-impurity
-imputation
-imputations
-impute
-imputed
-imputing
-in
-inabilities
-inability
-inaccessibility
-inaccessible
-inaccuracies
-inaccuracy
-inaccurate
-inaccurately
-inaction
-inactivated
-inactivating
-inactivation
-inactive
-inactivity
-inadequacies
-inadequacy
-inadequate
-inadequately
-inadmissible
-inadvertence
-inadvertent
-inadvertently
-inadvisability
-inadvisable
-inadvisedly
-inalienable
-inane
-inanely
-inanimate
-inanities
-inanity
-inapplicability
-inapplicable
-inappropriate
-inappropriately
-inappropriateness
-inaptly
-inarticulacy
-inarticulate
-inarticulateness
-inasmuch
-inattention
-inattentive
-inattentively
-inaudibility
-inaudible
-inaudibly
-inaugural
-inaugurate
-inaugurated
-inaugurates
-inaugurating
-inauguration
-inauspicious
-inauspiciously
-inauthenticity
-inboard
-inborn
-inbound
-inbred
-inbreeding
-inbuilt
-inca
-incalculable
-incalculably
-incandescence
-incandescent
-incandescently
-incant
-incantation
-incantations
-incantatory
-incapability
-incapable
-incapacitate
-incapacitated
-incapacitates
-incapacitating
-incapacitation
-incapacity
-incarcerated
-incarcerating
-incarceration
-incarnate
-incarnated
-incarnation
-incarnations
-incas
-incased
-incautious
-incautiously
-incendiaries
-incendiary
-incense
-incensed
-incenses
-incensing
-incentive
-incentives
-inception
-incessant
-incessantly
-incest
-incests
-incestuous
-incestuousness
-inch
-inched
-inches
-inching
-inchoate
-incidence
-incidences
-incident
-incidental
-incidentally
-incidents
-incinerate
-incinerated
-incinerates
-incinerating
-incineration
-incinerator
-incinerators
-incipient
-incised
-incision
-incisions
-incisive
-incisively
-incisiveness
-incisor
-incisors
-incite
-incited
-incitement
-incitements
-inciter
-inciters
-incites
-inciting
-inclemency
-inclement
-inclination
-inclinations
-incline
-inclined
-inclines
-inclining
-include
-included
-includes
-including
-inclusion
-inclusions
-inclusive
-inclusively
-inclusiveness
-incognito
-incoherence
-incoherency
-incoherent
-incoherently
-incombustible
-income
-incomer
-incomers
-incomes
-incoming
-incommensurable
-incommoding
-incommunicable
-incommunicado
-incomparable
-incomparably
-incompatibilities
-incompatibility
-incompatible
-incompatibly
-incompetence
-incompetent
-incompetently
-incompetents
-incomplete
-incompletely
-incompleteness
-incomprehensibility
-incomprehensible
-incomprehensibly
-incomprehension
-incompressible
-inconceivable
-inconceivably
-inconclusive
-inconclusively
-incongruities
-incongruity
-incongruous
-incongruously
-inconsequential
-inconsequentially
-inconsiderable
-inconsiderate
-inconsiderately
-inconsiderateness
-inconsistencies
-inconsistency
-inconsistent
-inconsistently
-inconsolable
-inconsolably
-inconspicuous
-inconspicuously
-inconspicuousness
-inconstancy
-inconstant
-incontestable
-incontestably
-incontinence
-incontinent
-incontinently
-incontrovertible
-incontrovertibly
-inconvenience
-inconvenienced
-inconveniences
-inconveniencing
-inconvenient
-inconveniently
-incorporable
-incorporate
-incorporated
-incorporates
-incorporating
-incorporation
-incorrect
-incorrectly
-incorrectness
-incorrigible
-incorrigibly
-incorruptible
-increase
-increased
-increases
-increasing
-increasingly
-incredible
-incredibly
-incredulity
-incredulous
-incredulously
-increment
-incremental
-incrementally
-incrementation
-incremented
-incrementing
-increments
-incriminate
-incriminated
-incriminates
-incriminating
-incrimination
-incubate
-incubated
-incubating
-incubation
-incubations
-incubator
-incubators
-inculcate
-inculcated
-inculcating
-inculcation
-incumbency
-incumbent
-incumbents
-incur
-incurable
-incurably
-incuriously
-incurred
-incurring
-incurs
-incursion
-incursions
-indaba
-indebted
-indebtedness
-indecency
-indecent
-indecently
-indecipherable
-indecision
-indecisive
-indecisively
-indecisiveness
-indeclinable
-indecorous
-indeed
-indefatigable
-indefeasible
-indefensible
-indefinable
-indefinably
-indefinite
-indefinitely
-indelible
-indelibly
-indelicacy
-indelicate
-indemnified
-indemnify
-indemnities
-indemnity
-indent
-indentation
-indentations
-indented
-indenting
-indents
-indentures
-independence
-independent
-independently
-independents
-indepth
-indescribable
-indescribably
-indestructibility
-indestructible
-indeterminable
-indeterminacy
-indeterminate
-index
-indexation
-indexed
-indexer
-indexers
-indexes
-indexing
-india
-indian
-indiana
-indians
-indicant
-indicants
-indicate
-indicated
-indicates
-indicating
-indication
-indications
-indicative
-indicator
-indicators
-indices
-indict
-indictable
-indicted
-indicting
-indictment
-indictments
-indicts
-indifference
-indifferent
-indifferently
-indigenous
-indigestible
-indigestion
-indignant
-indignantly
-indignation
-indignities
-indignity
-indigo
-indirect
-indirection
-indirections
-indirectly
-indirectness
-indiscipline
-indiscreet
-indiscreetly
-indiscretion
-indiscretions
-indiscriminate
-indiscriminately
-indispensability
-indispensable
-indispensably
-indispose
-indisposed
-indisposition
-indisputable
-indisputably
-indissoluble
-indissolubly
-indistinct
-indistinctly
-indistinctness
-indistinguishable
-indistinguishably
-indite
-individual
-individualised
-individualism
-individualist
-individualistic
-individualists
-individuality
-individually
-individuals
-individuation
-indivisibility
-indivisible
-indivisibly
-indoctrinate
-indoctrinated
-indoctrinates
-indoctrinating
-indoctrination
-indoctrinations
-indoctrinator
-indoctrinators
-indole
-indolence
-indolent
-indolently
-indomitable
-indoor
-indoors
-indorsed
-indorses
-indrawn
-indubitable
-indubitably
-induce
-induced
-inducement
-inducements
-induces
-inducible
-inducing
-induct
-inductance
-inducted
-induction
-inductions
-inductive
-inductively
-inductor
-inductors
-inducts
-indulge
-indulged
-indulgence
-indulgences
-indulgent
-indulgently
-indulger
-indulges
-indulging
-induna
-industrial
-industrialisation
-industrialise
-industrialised
-industrialising
-industrialism
-industrialist
-industrialists
-industrially
-industries
-industrious
-industriously
-industriousness
-industry
-inebriate
-inebriated
-inebriation
-inedible
-ineffable
-ineffective
-ineffectively
-ineffectiveness
-ineffectual
-ineffectually
-ineffectualness
-inefficiencies
-inefficiency
-inefficient
-inefficiently
-inelastic
-inelegance
-inelegant
-inelegantly
-ineligibility
-ineligible
-ineluctable
-ineluctably
-inept
-ineptitude
-ineptly
-ineptness
-inequalities
-inequality
-inequitable
-inequities
-inequity
-ineradicable
-ineradicably
-inert
-inertia
-inertial
-inertness
-inescapable
-inescapably
-inessential
-inestimable
-inestimably
-inevitability
-inevitable
-inevitably
-inexact
-inexactitude
-inexactitudes
-inexcusable
-inexcusably
-inexhaustible
-inexhaustibly
-inexorability
-inexorable
-inexorably
-inexpedient
-inexpensive
-inexpensively
-inexperience
-inexperienced
-inexpert
-inexpertly
-inexplicable
-inexplicably
-inexpressibility
-inexpressible
-inexpressibly
-inextensible
-inextinguishable
-inextricable
-inextricably
-infallibility
-infallible
-infallibly
-infamous
-infamously
-infamy
-infancy
-infant
-infanta
-infante
-infanticide
-infantile
-infantry
-infantryman
-infantrymen
-infants
-infarct
-infarction
-infarctions
-infatuate
-infatuated
-infatuation
-infatuations
-infeasibility
-infeasible
-infect
-infected
-infecting
-infection
-infections
-infectious
-infectiously
-infective
-infects
-infelicities
-infelicitous
-infelicitously
-infelicity
-infer
-inference
-inferences
-inferential
-inferentially
-inferior
-inferiority
-inferiors
-infernal
-infernally
-inferno
-inferred
-inferring
-infers
-infertile
-infertility
-infest
-infestation
-infestations
-infested
-infesting
-infests
-infidel
-infidelities
-infidelity
-infidels
-infield
-infighting
-infill
-infilling
-infiltrate
-infiltrated
-infiltrates
-infiltrating
-infiltration
-infiltrations
-infiltrator
-infiltrators
-infinite
-infinitely
-infinitesimal
-infinitesimally
-infinitesimals
-infinities
-infinitive
-infinitives
-infinitude
-infinity
-infirm
-infirmaries
-infirmary
-infirmities
-infirmity
-infix
-inflame
-inflamed
-inflames
-inflaming
-inflammable
-inflammation
-inflammatory
-inflatable
-inflate
-inflated
-inflates
-inflating
-inflation
-inflationary
-inflect
-inflected
-inflecting
-inflection
-inflectional
-inflections
-inflects
-inflexibility
-inflexible
-inflexibly
-inflexion
-inflexions
-inflict
-inflicted
-inflicter
-inflicting
-infliction
-inflictions
-inflicts
-inflow
-inflowing
-inflows
-influence
-influenced
-influences
-influencing
-influential
-influenza
-influx
-influxes
-info
-inform
-informal
-informality
-informally
-informant
-informants
-informatics
-information
-informational
-informative
-informatively
-informativeness
-informatory
-informed
-informer
-informers
-informing
-informs
-infra
-infraction
-infractions
-infrared
-infrastructural
-infrastructure
-infrastructures
-infrequency
-infrequent
-infrequently
-infringe
-infringed
-infringement
-infringements
-infringes
-infringing
-infuriate
-infuriated
-infuriates
-infuriating
-infuriatingly
-infuse
-infused
-infuses
-infusing
-infusion
-infusions
-ingathered
-ingenious
-ingeniously
-ingenuity
-ingenuous
-ingenuously
-ingenuousness
-ingest
-ingested
-ingesting
-ingestion
-inglorious
-ingoing
-ingot
-ingots
-ingrained
-ingrate
-ingratiate
-ingratiated
-ingratiating
-ingratiatingly
-ingratitude
-ingredient
-ingredients
-ingress
-ingression
-ingrown
-inhabit
-inhabitable
-inhabitant
-inhabitants
-inhabited
-inhabiting
-inhabits
-inhalant
-inhalation
-inhalations
-inhale
-inhaled
-inhaler
-inhalers
-inhales
-inhaling
-inherent
-inherently
-inherit
-inheritable
-inheritance
-inheritances
-inherited
-inheriting
-inheritor
-inheritors
-inherits
-inhibit
-inhibited
-inhibiting
-inhibition
-inhibitions
-inhibitor
-inhibitors
-inhibitory
-inhibits
-inhomogeneities
-inhomogeneity
-inhomogeneous
-inhospitable
-inhouse
-inhuman
-inhumane
-inhumanely
-inhumanities
-inhumanity
-inhumanly
-inimical
-inimitable
-inimitably
-iniquities
-iniquitous
-iniquitously
-iniquity
-initial
-initialisation
-initialisations
-initialise
-initialised
-initialises
-initialising
-initialled
-initially
-initials
-initiate
-initiated
-initiates
-initiating
-initiation
-initiations
-initiative
-initiatives
-initiator
-initiators
-inject
-injectable
-injected
-injecting
-injection
-injections
-injector
-injects
-injoke
-injokes
-injudicious
-injudiciously
-injunction
-injunctions
-injure
-injured
-injures
-injuries
-injuring
-injurious
-injuriously
-injury
-injustice
-injustices
-ink
-inked
-inkier
-inkiest
-inking
-inkling
-inklings
-inkpad
-inkpot
-inkpots
-inks
-inkstand
-inkstands
-inkwell
-inkwells
-inky
-inlaid
-inland
-inlaw
-inlaws
-inlay
-inlays
-inlet
-inlets
-inmate
-inmates
-inmost
-inn
-innards
-innate
-innately
-inner
-innermost
-innervation
-innings
-innkeeper
-innkeepers
-innocence
-innocent
-innocently
-innocents
-innocuous
-innocuousness
-innovate
-innovated
-innovating
-innovation
-innovations
-innovative
-innovatively
-innovator
-innovators
-innovatory
-inns
-innuendo
-innumerable
-innumerably
-innumeracy
-innumerate
-inoculate
-inoculated
-inoculates
-inoculating
-inoculation
-inoculations
-inoffensive
-inoperable
-inoperative
-inopportune
-inordinate
-inordinately
-inorganic
-input
-inputs
-inputting
-inquest
-inquests
-inquire
-inquired
-inquirer
-inquirers
-inquires
-inquiries
-inquiring
-inquiringly
-inquiry
-inquisition
-inquisitional
-inquisitions
-inquisitive
-inquisitively
-inquisitiveness
-inquisitor
-inquisitorial
-inquisitorially
-inquisitors
-inquorate
-inroad
-inroads
-inrush
-ins
-insalubrious
-insane
-insanely
-insanitary
-insanities
-insanity
-insatiable
-insatiably
-inscribe
-inscribed
-inscribing
-inscription
-inscriptions
-inscrutability
-inscrutable
-inscrutably
-insect
-insecticidal
-insecticide
-insecticides
-insectivores
-insectivorous
-insects
-insecure
-insecurely
-insecurities
-insecurity
-insemination
-insensibility
-insensible
-insensibly
-insensitive
-insensitively
-insensitivity
-inseparable
-inseparably
-insert
-inserted
-inserting
-insertion
-insertions
-inserts
-inset
-insets
-inshore
-inside
-insideout
-insider
-insiders
-insides
-insidious
-insidiously
-insight
-insightful
-insights
-insignia
-insignificance
-insignificant
-insignificantly
-insincere
-insincerely
-insincerity
-insinuate
-insinuated
-insinuating
-insinuatingly
-insinuation
-insinuations
-insipid
-insist
-insisted
-insistence
-insistent
-insistently
-insisting
-insists
-insofar
-insole
-insolence
-insolent
-insolently
-insolubility
-insoluble
-insolvencies
-insolvency
-insolvent
-insomnia
-insomniac
-insomniacs
-insouciance
-insouciant
-inspect
-inspected
-inspecting
-inspection
-inspections
-inspector
-inspectorate
-inspectorates
-inspectors
-inspects
-inspiration
-inspirational
-inspirations
-inspire
-inspired
-inspires
-inspiring
-instabilities
-instability
-install
-installable
-installation
-installations
-installed
-installer
-installers
-installing
-installs
-instalment
-instalments
-instance
-instanced
-instances
-instancy
-instant
-instantaneous
-instantaneously
-instantiate
-instantiated
-instantiates
-instantiating
-instantiation
-instantiations
-instantly
-instants
-instated
-instead
-instep
-insteps
-instigate
-instigated
-instigates
-instigating
-instigation
-instigator
-instigators
-instil
-instillation
-instilled
-instilling
-instills
-instils
-instinct
-instinctive
-instinctively
-instincts
-instinctual
-institute
-instituted
-institutes
-instituting
-institution
-institutional
-institutionalisation
-institutionalise
-institutionalised
-institutionalising
-institutionalism
-institutionally
-institutions
-instruct
-instructed
-instructing
-instruction
-instructional
-instructions
-instructive
-instructor
-instructors
-instructs
-instrument
-instrumental
-instrumentalist
-instrumentalists
-instrumentality
-instrumentally
-instrumentals
-instrumentation
-instrumented
-instruments
-insubordinate
-insubordination
-insubstantial
-insufferable
-insufferably
-insufficiency
-insufficient
-insufficiently
-insulant
-insular
-insularity
-insulate
-insulated
-insulates
-insulating
-insulation
-insulator
-insulators
-insulin
-insult
-insulted
-insulter
-insulting
-insultingly
-insults
-insuperable
-insupportable
-insurance
-insurances
-insure
-insured
-insurer
-insurers
-insures
-insurgency
-insurgent
-insurgents
-insuring
-insurmountable
-insurmountably
-insurrection
-insurrectionary
-insurrections
-intact
-intaglio
-intake
-intakes
-intangible
-intangibles
-integer
-integers
-integrability
-integrable
-integral
-integrally
-integrals
-integrand
-integrands
-integrate
-integrated
-integrates
-integrating
-integration
-integrationist
-integrations
-integrative
-integrator
-integrators
-integrity
-intellect
-intellects
-intellectual
-intellectualism
-intellectuality
-intellectually
-intellectuals
-intelligence
-intelligences
-intelligent
-intelligently
-intelligentsia
-intelligibility
-intelligible
-intelligibly
-intemperance
-intemperate
-intend
-intended
-intending
-intends
-intense
-intensely
-intensification
-intensified
-intensifies
-intensify
-intensifying
-intensities
-intensity
-intensive
-intensively
-intent
-intention
-intentional
-intentionality
-intentionally
-intentioned
-intentions
-intently
-intentness
-intents
-inter
-interact
-interacted
-interacting
-interaction
-interactional
-interactions
-interactive
-interactively
-interactiveness
-interacts
-interatomic
-interbank
-interbred
-interbreed
-interbreeding
-intercede
-interceded
-interceding
-intercept
-intercepted
-intercepting
-interception
-interceptions
-interceptor
-interceptors
-intercepts
-intercession
-intercessions
-interchange
-interchangeability
-interchangeable
-interchangeably
-interchanged
-interchanges
-interchanging
-intercity
-intercollegiate
-intercom
-intercommunicate
-intercommunication
-interconnect
-interconnected
-interconnectedness
-interconnecting
-interconnection
-interconnections
-interconnects
-intercontinental
-interconversion
-intercountry
-intercourse
-intercut
-interdenominational
-interdepartmental
-interdependence
-interdependency
-interdependent
-interdict
-interdicted
-interdisciplinary
-interest
-interested
-interestedly
-interesting
-interestingly
-interests
-interface
-interfaced
-interfaces
-interfacing
-interfere
-interfered
-interference
-interferences
-interferer
-interferes
-interfering
-interferometer
-interferometers
-interferometric
-interferometry
-interferon
-intergalactic
-interglacial
-intergovernmental
-interim
-interims
-interior
-interiors
-interject
-interjected
-interjecting
-interjection
-interjectional
-interjections
-interjects
-interlace
-interlaced
-interlacing
-interlap
-interleave
-interleaved
-interleaves
-interleaving
-interlingual
-interlinked
-interlock
-interlocked
-interlocking
-interlocks
-interlocutor
-interlocutors
-interlocutory
-interloper
-interlopers
-interlude
-interludes
-intermarriage
-intermarriages
-intermediaries
-intermediary
-intermediate
-intermediates
-interment
-interments
-interminable
-interminably
-intermingled
-intermingling
-intermission
-intermissions
-intermittent
-intermittently
-intermix
-intermixed
-intermixing
-intermolecular
-intern
-internal
-internalisation
-internalise
-internalised
-internalises
-internalising
-internally
-internals
-international
-internationalisation
-internationalised
-internationalism
-internationalist
-internationalists
-internationally
-internationals
-interned
-internees
-internet
-interning
-internment
-internments
-interns
-internuclear
-interocular
-interoperability
-interoperable
-interpellation
-interpenetration
-interpersonal
-interplanetary
-interplay
-interplays
-interpolatable
-interpolate
-interpolated
-interpolates
-interpolating
-interpolation
-interpolations
-interpose
-interposed
-interposes
-interposing
-interposition
-interpret
-interpretable
-interpretation
-interpretational
-interpretations
-interpretative
-interpreted
-interpreter
-interpreters
-interpreting
-interpretive
-interpretively
-interprets
-interracial
-interred
-interregnum
-interrelate
-interrelated
-interrelatedness
-interrelation
-interrelations
-interrelationship
-interrelationships
-interrogate
-interrogated
-interrogates
-interrogating
-interrogation
-interrogations
-interrogative
-interrogatively
-interrogatives
-interrogator
-interrogators
-interrogatory
-interrupt
-interrupted
-interruptibility
-interrupting
-interruption
-interruptions
-interrupts
-intersect
-intersected
-intersecting
-intersection
-intersections
-intersects
-intersperse
-interspersed
-intersperses
-interspersing
-interstellar
-interstices
-interstitial
-interstitially
-intertidal
-intertwine
-intertwined
-intertwining
-interval
-intervals
-intervene
-intervened
-intervenes
-intervening
-intervention
-interventionism
-interventionist
-interventions
-interview
-interviewed
-interviewee
-interviewees
-interviewer
-interviewers
-interviewing
-interviews
-interweaving
-interwoven
-intestacy
-intestate
-intestinal
-intestine
-intestines
-intifada
-intimacies
-intimacy
-intimate
-intimated
-intimately
-intimates
-intimating
-intimation
-intimations
-intimidate
-intimidated
-intimidates
-intimidating
-intimidation
-intimidatory
-into
-intolerable
-intolerably
-intolerance
-intolerant
-intonation
-intonational
-intonations
-intone
-intoned
-intones
-intoning
-intoxicant
-intoxicants
-intoxicate
-intoxicated
-intoxicating
-intoxication
-intracellular
-intractability
-intractable
-intractably
-intramural
-intramuscular
-intransigence
-intransigent
-intransitive
-intrauterine
-intravenous
-intravenously
-intrepid
-intrepidly
-intricacies
-intricacy
-intricate
-intricately
-intrigue
-intrigued
-intrigues
-intriguing
-intriguingly
-intrinsic
-intrinsically
-intro
-introduce
-introduced
-introduces
-introducing
-introduction
-introductions
-introductory
-introspection
-introspective
-introspectively
-introversion
-introvert
-introverted
-introverts
-intrude
-intruded
-intruder
-intruders
-intrudes
-intruding
-intrusion
-intrusions
-intrusive
-intrusiveness
-intuited
-intuition
-intuitionist
-intuitions
-intuitive
-intuitively
-intuitiveness
-inuit
-inuits
-inundate
-inundated
-inundation
-inure
-inured
-invade
-invaded
-invader
-invaders
-invades
-invading
-invalid
-invalidate
-invalidated
-invalidates
-invalidating
-invalidation
-invalided
-invalidity
-invalids
-invaluable
-invariable
-invariably
-invariance
-invariant
-invariants
-invasion
-invasions
-invasive
-invective
-invectives
-inveigh
-inveighing
-inveigle
-inveigled
-inveigler
-inveiglers
-inveigling
-invent
-invented
-inventing
-invention
-inventions
-inventive
-inventively
-inventiveness
-inventor
-inventories
-inventors
-inventory
-invents
-inverse
-inversely
-inverses
-inversion
-inversions
-invert
-invertebrate
-invertebrates
-inverted
-inverter
-inverters
-invertible
-inverting
-inverts
-invest
-invested
-investigate
-investigated
-investigates
-investigating
-investigation
-investigations
-investigative
-investigator
-investigators
-investigatory
-investing
-investiture
-investment
-investments
-investor
-investors
-invests
-inveterate
-invidious
-invigilate
-invigilated
-invigilating
-invigilator
-invigilators
-invigorate
-invigorated
-invigorating
-invigoratingly
-invincibility
-invincible
-inviolability
-inviolable
-inviolate
-inviscid
-invisibilities
-invisibility
-invisible
-invisibles
-invisibly
-invitation
-invitations
-invite
-invited
-invites
-inviting
-invitingly
-invocation
-invocations
-invoice
-invoiced
-invoices
-invoicing
-invokable
-invoke
-invoked
-invoker
-invokers
-invokes
-invoking
-involuntarily
-involuntary
-involute
-involution
-involutions
-involve
-involved
-involvement
-involvements
-involves
-involving
-invulnerability
-invulnerable
-inward
-inwardly
-inwardness
-inwards
-iodide
-iodine
-ion
-ionian
-ionic
-ionisation
-ionise
-ionised
-ionising
-ionosphere
-ionospheric
-ions
-iota
-iotas
-iran
-iranian
-iranians
-iraq
-iraqi
-iraqis
-irascibility
-irascible
-irascibly
-irate
-ire
-ireland
-iridescence
-iridescent
-iridium
-iris
-irises
-irish
-irishman
-irishmen
-irk
-irked
-irking
-irks
-irksome
-irksomeness
-iron
-ironage
-ironed
-ironic
-ironical
-ironically
-ironies
-ironing
-ironlady
-ironmonger
-ironmongers
-ironmongery
-irons
-ironstone
-ironwork
-ironworks
-irony
-irradiate
-irradiated
-irradiating
-irradiation
-irrational
-irrationalities
-irrationality
-irrationally
-irreconcilable
-irrecoverable
-irrecoverably
-irredeemable
-irredeemably
-irreducibility
-irreducible
-irreducibly
-irrefutable
-irregular
-irregularities
-irregularity
-irregularly
-irregulars
-irrelevance
-irrelevances
-irrelevancy
-irrelevant
-irrelevantly
-irreligious
-irremediable
-irremovable
-irreparable
-irreparably
-irreplaceable
-irrepressible
-irrepressibly
-irreproachable
-irreproachably
-irresistible
-irresistibly
-irresolute
-irresolutely
-irresolution
-irresolvable
-irrespective
-irrespectively
-irresponsibility
-irresponsible
-irresponsibly
-irretrievable
-irretrievably
-irreverence
-irreverent
-irreverently
-irreversibility
-irreversible
-irreversibly
-irrevocable
-irrevocably
-irrigate
-irrigated
-irrigating
-irrigation
-irritability
-irritable
-irritably
-irritant
-irritants
-irritate
-irritated
-irritatedly
-irritates
-irritating
-irritatingly
-irritation
-irritations
-irrupted
-irruption
-is
-isis
-islam
-islamic
-island
-islander
-islanders
-islands
-isle
-isles
-islet
-islets
-isms
-isnt
-isobar
-isobars
-isogram
-isolate
-isolated
-isolates
-isolating
-isolation
-isolationism
-isolationist
-isolator
-isolators
-isomer
-isomeric
-isomers
-isometric
-isometrically
-isometry
-isomorph
-isomorphic
-isomorphism
-isomorphisms
-isoperimetrical
-isosceles
-isostatic
-isothermal
-isothermally
-isotonic
-isotope
-isotopes
-isotopic
-isotropic
-isotropically
-isotropy
-israel
-israeli
-israelis
-issuable
-issuance
-issue
-issued
-issuer
-issuers
-issues
-issuing
-istanbul
-isthmus
-it
-italian
-italians
-italic
-italicisation
-italicise
-italicised
-italics
-italy
-itch
-itched
-itches
-itchier
-itchiest
-itching
-itchy
-item
-itemise
-itemised
-itemises
-itemising
-items
-iterate
-iterated
-iterates
-iterating
-iteration
-iterations
-iterative
-iteratively
-iterators
-itinerant
-itinerants
-itineraries
-itinerary
-itll
-its
-itself
-ive
-ivies
-ivories
-ivory
-ivy
-jab
-jabbed
-jabber
-jabbered
-jabbering
-jabbers
-jabbing
-jabs
-jack
-jackal
-jackals
-jackass
-jackasses
-jackboot
-jackbooted
-jackboots
-jackdaw
-jackdaws
-jacked
-jacket
-jackets
-jacking
-jackinthebox
-jackpot
-jackpots
-jacks
-jacob
-jacuzzi
-jade
-jaded
-jadedly
-jadedness
-jades
-jag
-jagged
-jaggedly
-jaguar
-jaguars
-jahweh
-jail
-jailbird
-jailed
-jailer
-jailers
-jailing
-jails
-jakarta
-jalopy
-jam
-jamaica
-jamaican
-jamb
-jamboree
-jambs
-james
-jammed
-jamming
-jams
-jangle
-jangled
-jangling
-jangly
-janitor
-janitors
-january
-janus
-jap
-japan
-jape
-japes
-japonica
-jar
-jargon
-jargons
-jarl
-jarred
-jarring
-jars
-jasmine
-jaundice
-jaundiced
-jaunt
-jaunted
-jauntier
-jauntiest
-jauntily
-jaunting
-jaunts
-jaunty
-java
-javelin
-javelins
-jaw
-jawbone
-jawbones
-jawed
-jawing
-jawline
-jaws
-jay
-jays
-jaywalk
-jaywalker
-jaywalking
-jazz
-jazzed
-jazzier
-jazziest
-jazzy
-jealous
-jealousies
-jealously
-jealousy
-jeans
-jeep
-jeeps
-jeer
-jeered
-jeering
-jeeringly
-jeerings
-jeers
-jehad
-jejune
-jejunum
-jell
-jellied
-jellies
-jellify
-jelly
-jellyfish
-jemmy
-jennets
-jeopardise
-jeopardised
-jeopardises
-jeopardising
-jeopardy
-jerboas
-jeremiah
-jericho
-jerk
-jerked
-jerkier
-jerkiest
-jerkily
-jerkin
-jerking
-jerkings
-jerkins
-jerks
-jerky
-jersey
-jerseys
-jest
-jested
-jester
-jesters
-jesting
-jestingly
-jests
-jesuit
-jesus
-jet
-jetlagged
-jetplane
-jetpropelled
-jets
-jetsam
-jetsetting
-jetted
-jetties
-jetting
-jettison
-jettisoned
-jettisoning
-jetty
-jew
-jewel
-jewelled
-jeweller
-jewellers
-jewellery
-jewelry
-jewels
-jewess
-jewish
-jews
-jewsharp
-jezebel
-jiffy
-jiggle
-jiggling
-jigs
-jigsaw
-jigsaws
-jihad
-jilt
-jilted
-jilting
-jilts
-jimmy
-jingle
-jingled
-jingles
-jingling
-jingo
-jingoism
-jingoistic
-jinked
-jinks
-jinx
-jinxed
-jinxes
-jitter
-jitters
-jittery
-jiujitsu
-jive
-jived
-jives
-job
-jobbing
-jobless
-joblessness
-jobs
-jock
-jockey
-jockeying
-jockeys
-jocular
-jocularity
-jocularly
-joey
-jog
-jogged
-jogger
-joggers
-jogging
-jogs
-john
-join
-joined
-joiner
-joiners
-joinery
-joining
-joins
-joint
-jointed
-jointing
-jointly
-joints
-jointures
-joist
-joists
-joke
-joked
-joker
-jokers
-jokes
-jokey
-jokier
-jokily
-joking
-jokingly
-jollier
-jolliest
-jollify
-jollily
-jollity
-jolly
-jolt
-jolted
-jolting
-jolts
-jonah
-jonathan
-joseph
-joshua
-jostle
-jostled
-jostles
-jostling
-jot
-jots
-jotted
-jotter
-jotting
-jottings
-joule
-joules
-journal
-journalese
-journalism
-journalist
-journalistic
-journalists
-journalled
-journalling
-journals
-journey
-journeyed
-journeyer
-journeying
-journeyman
-journeys
-joust
-jouster
-jousting
-jousts
-jovial
-joviality
-jovially
-jovian
-jowl
-jowls
-joy
-joyed
-joyful
-joyfully
-joyfulness
-joyless
-joylessness
-joyous
-joyously
-joyousness
-joyride
-joyrider
-joyriders
-joyriding
-joys
-joystick
-joysticks
-jubilant
-jubilantly
-jubilate
-jubilation
-jubilee
-jubilees
-judaic
-judaism
-judas
-judder
-juddered
-juddering
-judders
-judge
-judged
-judgement
-judgemental
-judgements
-judges
-judging
-judgment
-judgmental
-judgments
-judicature
-judicial
-judicially
-judiciaries
-judiciary
-judicious
-judiciously
-judo
-jug
-jugged
-juggernaut
-juggernauts
-juggle
-juggled
-juggler
-jugglers
-juggles
-juggling
-jugs
-jugular
-juice
-juices
-juicier
-juiciest
-juiciness
-juicy
-jukebox
-jukeboxes
-julep
-juleps
-july
-jumble
-jumbled
-jumbles
-jumbo
-jump
-jumped
-jumper
-jumpers
-jumpier
-jumpiest
-jumpiness
-jumping
-jumps
-jumpstart
-jumpstarting
-jumpsuit
-jumpy
-junction
-junctions
-juncture
-june
-jungle
-jungles
-junior
-juniority
-juniors
-juniper
-junk
-junker
-junket
-junkie
-junkies
-junkmail
-junks
-junkyard
-juno
-junta
-juntas
-jupiter
-jurassic
-juridic
-juridical
-juries
-jurisdiction
-jurisdictional
-jurisdictions
-jurisprudence
-jurisprudential
-jurist
-juristic
-jurists
-juror
-jurors
-jury
-juryman
-jurymen
-jussive
-just
-justice
-justices
-justifiability
-justifiable
-justifiably
-justification
-justifications
-justificatory
-justified
-justifies
-justify
-justifying
-justly
-justness
-jut
-jute
-juts
-jutted
-jutting
-juvenile
-juveniles
-juxtapose
-juxtaposed
-juxtaposes
-juxtaposing
-juxtaposition
-juxtapositions
-kaftan
-kaftans
-kaiser
-kalahari
-kale
-kaleidoscope
-kaleidoscopic
-kalif
-kamikaze
-kampala
-kampong
-kangaroo
-kangaroos
-kaolin
-karakul
-karaoke
-karate
-karma
-karst
-katydid
-kayak
-kayaks
-kebab
-kebabs
-kedgeree
-keel
-keeled
-keelhaul
-keeling
-keels
-keen
-keener
-keenest
-keening
-keenly
-keenness
-keep
-keeper
-keepers
-keeping
-keeps
-keepsake
-keepsakes
-keg
-kegs
-kelp
-kelpers
-kelt
-kelts
-kelvin
-ken
-kennedy
-kennel
-kennelled
-kennels
-kent
-kentucky
-kenya
-kenyan
-kept
-keratin
-kerb
-kerbs
-kerbside
-kerchief
-kerned
-kernel
-kernels
-kerning
-kerosene
-kestrel
-kestrels
-ketch
-ketchup
-kettle
-kettleful
-kettles
-key
-keyboard
-keyboardist
-keyboards
-keyed
-keyhole
-keyholes
-keying
-keynote
-keynotes
-keypad
-keypads
-keyring
-keys
-keystone
-keystones
-keystroke
-keystrokes
-keyword
-keywords
-khaki
-khalif
-khan
-khans
-khoikhoi
-khoisan
-kibbutz
-kick
-kickback
-kicked
-kicker
-kicking
-kicks
-kickstart
-kickstarted
-kickstarting
-kickstarts
-kid
-kidded
-kiddie
-kidding
-kidnap
-kidnapped
-kidnapper
-kidnappers
-kidnapping
-kidnappings
-kidnaps
-kidney
-kidneys
-kidneyshaped
-kids
-kiev
-kill
-killed
-killer
-killers
-killing
-killings
-killjoy
-killjoys
-kills
-kiln
-kilns
-kilo
-kilobits
-kilobyte
-kilobytes
-kilohertz
-kilojoules
-kilometre
-kilometres
-kiloton
-kilotons
-kilovolt
-kilowatt
-kilowatts
-kilt
-kilted
-kilter
-kilts
-kimono
-kin
-kina
-kinase
-kind
-kinder
-kindergarten
-kindergartens
-kindest
-kindhearted
-kindheartedness
-kindle
-kindled
-kindles
-kindlier
-kindliest
-kindliness
-kindling
-kindly
-kindness
-kindnesses
-kindred
-kinds
-kinematic
-kinematics
-kinetic
-kinetically
-kinetics
-kinfolk
-king
-kingdom
-kingdoms
-kingfisher
-kingfishers
-kingly
-kingpin
-kings
-kingship
-kingsize
-kingsized
-kink
-kinked
-kinks
-kinky
-kinsfolk
-kinshasa
-kinship
-kinsman
-kinsmen
-kinswoman
-kiosk
-kiosks
-kipper
-kippers
-kirk
-kismet
-kiss
-kissed
-kisser
-kisses
-kissing
-kit
-kitbag
-kitbags
-kitchen
-kitchenette
-kitchens
-kitchenware
-kite
-kites
-kith
-kits
-kitsch
-kitted
-kitten
-kittenish
-kittens
-kitting
-kittiwakes
-kitty
-kiwi
-kiwis
-klaxon
-klaxons
-kleptomania
-kleptomaniac
-kleptomaniacs
-klick
-kloof
-knack
-knacker
-knackers
-knacks
-knapsack
-knapsacks
-knave
-knavery
-knaves
-knavish
-knead
-kneaded
-kneading
-kneads
-knee
-kneecap
-kneecaps
-kneed
-kneedeep
-kneel
-kneeled
-kneeler
-kneeling
-kneels
-knees
-knell
-knelt
-knesset
-knew
-knickers
-knife
-knifed
-knifepoint
-knifes
-knifing
-knight
-knighted
-knighthood
-knighthoods
-knightly
-knights
-knit
-knits
-knitted
-knitter
-knitters
-knitting
-knitwear
-knives
-knob
-knobbly
-knobs
-knock
-knocked
-knocker
-knockers
-knocking
-knockings
-knockout
-knocks
-knoll
-knolls
-knot
-knots
-knotted
-knottier
-knottiest
-knotting
-knotty
-know
-knowable
-knowhow
-knowing
-knowingly
-knowledge
-knowledgeable
-knowledgeably
-known
-knows
-knuckle
-knuckled
-knuckleduster
-knuckledusters
-knuckles
-knuckling
-koala
-koalas
-kongo
-kookaburra
-koran
-korea
-korean
-koreans
-kosher
-kraal
-kraals
-kraft
-kremlin
-kriegspiel
-krill
-krypton
-kudu
-kudus
-kungfu
-kuwait
-kwacha
-kwachas
-laager
-lab
-label
-labelled
-labelling
-labellings
-labels
-labia
-labial
-labials
-labile
-labium
-laboratories
-laboratory
-laborious
-laboriously
-laboriousness
-labour
-laboured
-labourer
-labourers
-labouring
-labourintensive
-labours
-laboursaving
-labs
-laburnum
-labyrinth
-labyrinthine
-labyrinths
-lace
-laced
-lacerate
-lacerated
-lacerating
-laceration
-lacerations
-laces
-lacework
-laches
-lachrymal
-lachrymose
-lacier
-lacing
-lacings
-lack
-lackadaisical
-lacked
-lackey
-lackeys
-lacking
-lacklustre
-lacks
-laconic
-laconically
-lacquer
-lacquered
-lacquers
-lacrosse
-lacs
-lactate
-lactation
-lacteal
-lactic
-lactose
-lacuna
-lacunae
-lacunas
-lacy
-lad
-ladder
-laddered
-ladders
-laddie
-laddies
-lade
-laden
-ladies
-lading
-ladle
-ladled
-ladles
-ladling
-lads
-lady
-ladybird
-ladybirds
-ladybug
-ladylike
-ladyship
-ladyships
-lag
-lager
-lagers
-laggard
-laggards
-lagged
-lagging
-lagoon
-lagoons
-lagos
-lags
-lagune
-laid
-lain
-lair
-laird
-lairds
-lairs
-laissezfaire
-laity
-lake
-lakes
-lakeside
-lam
-lama
-lamas
-lamb
-lambasted
-lambasting
-lambda
-lambent
-lambing
-lambs
-lambskin
-lambswool
-lame
-lamed
-lamely
-lameness
-lament
-lamentable
-lamentably
-lamentation
-lamentations
-lamented
-lamenter
-lamenting
-laments
-lamest
-lamina
-laminar
-laminate
-laminated
-laminates
-lamination
-lamp
-lamplight
-lamplighter
-lamplit
-lampoon
-lampooned
-lampoonery
-lampooning
-lampoons
-lamppost
-lampposts
-lamprey
-lampreys
-lamps
-lampshade
-lampshades
-lance
-lanced
-lancelot
-lancer
-lancers
-lances
-lancet
-lancets
-lancing
-land
-landed
-lander
-landfall
-landfill
-landform
-landforms
-landholders
-landholding
-landholdings
-landing
-landings
-landladies
-landlady
-landless
-landlines
-landlocked
-landlord
-landlords
-landman
-landmark
-landmarks
-landmass
-landmine
-landowner
-landowners
-landowning
-lands
-landscape
-landscaped
-landscapes
-landscaping
-landside
-landslide
-landslides
-landslip
-landslips
-landward
-lane
-lanes
-language
-languages
-languid
-languidly
-languish
-languished
-languishes
-languishing
-languor
-languorous
-languorously
-lank
-lankier
-lankiest
-lanky
-lanolin
-lantern
-lanterns
-lanyard
-laos
-lap
-lapdog
-lapdogs
-lapel
-lapels
-lapful
-lapidary
-lapland
-lapp
-lapped
-lapping
-laps
-lapse
-lapsed
-lapses
-lapsing
-laptop
-laptops
-lapwing
-lapwings
-larceny
-larch
-larches
-lard
-larder
-larders
-lards
-large
-largely
-largeness
-larger
-largest
-largish
-largo
-lark
-larking
-larks
-larva
-larvae
-larval
-laryngeal
-laryngitis
-larynx
-larynxes
-las
-lasagne
-lascivious
-lasciviously
-lasciviousness
-lase
-laser
-lasers
-lash
-lashed
-lashers
-lashes
-lashing
-lashings
-lasing
-lass
-lasses
-lassie
-lassies
-lassitude
-lasso
-lassoed
-lassoing
-last
-lasted
-lasting
-lastly
-lasts
-latch
-latched
-latches
-latching
-late
-latecomer
-latecomers
-lately
-latencies
-latency
-lateness
-latent
-later
-lateral
-lateralisation
-laterally
-laterals
-latest
-latex
-lath
-lathe
-lather
-lathered
-lathers
-lathes
-laths
-latices
-latin
-latino
-latitude
-latitudes
-latitudinal
-latrine
-latrines
-latter
-lattice
-latticed
-lattices
-latvia
-latvian
-laud
-laudable
-laudatory
-lauded
-lauders
-lauding
-lauds
-laugh
-laughable
-laughably
-laughed
-laugher
-laughing
-laughingly
-laughs
-laughter
-launch
-launched
-launcher
-launchers
-launches
-launching
-launder
-laundered
-launderette
-launderettes
-laundering
-laundress
-laundrette
-laundrettes
-laundries
-laundry
-laureate
-laurel
-laurels
-lava
-lavas
-lavatorial
-lavatories
-lavatory
-lavender
-lavish
-lavished
-lavishes
-lavishing
-lavishly
-lavishness
-law
-lawabiding
-lawbreaker
-lawbreakers
-lawbreaking
-lawful
-lawfully
-lawfulness
-lawless
-lawlessness
-lawmaker
-lawmakers
-lawman
-lawmen
-lawn
-lawnmower
-lawnmowers
-lawns
-laws
-lawsuit
-lawsuits
-lawyer
-lawyers
-lax
-laxative
-laxatives
-laxer
-laxity
-laxness
-lay
-layabout
-layabouts
-layby
-laybys
-layer
-layered
-layering
-layers
-laying
-layman
-laymen
-layoff
-layoffs
-layout
-layouts
-layperson
-lays
-lazaret
-lazarus
-laze
-lazed
-lazier
-laziest
-lazily
-laziness
-lazing
-lazuli
-lazy
-lazybones
-lea
-leach
-leached
-leaches
-leaching
-lead
-leaded
-leaden
-leader
-leaderless
-leaders
-leadership
-leaderships
-leadfree
-leading
-leads
-leaf
-leafed
-leafier
-leafiest
-leafiness
-leafing
-leafless
-leaflet
-leaflets
-leafy
-league
-leagues
-leak
-leakage
-leakages
-leaked
-leakier
-leakiest
-leakiness
-leaking
-leaks
-leaky
-lean
-leaned
-leaner
-leanest
-leaning
-leanings
-leanness
-leans
-leant
-leap
-leaped
-leaper
-leapfrog
-leapfrogging
-leaping
-leaps
-leapt
-leapyear
-learn
-learnable
-learned
-learnedly
-learner
-learners
-learning
-learns
-learnt
-lease
-leased
-leasehold
-leaseholder
-leaseholders
-leases
-leash
-leashed
-leashes
-leashing
-leasing
-least
-leat
-leather
-leathers
-leathery
-leave
-leaved
-leaven
-leavened
-leavening
-leaver
-leavers
-leaves
-leaving
-leavings
-lebanon
-lebensraum
-lecher
-lecherous
-lecherousness
-lechery
-lectern
-lector
-lectors
-lecture
-lectured
-lecturer
-lecturers
-lectures
-lectureship
-lectureships
-lecturing
-led
-ledge
-ledger
-ledgers
-ledges
-lee
-leech
-leeches
-leeching
-leeds
-leek
-leeks
-leer
-leered
-leering
-leeringly
-leers
-lees
-leeward
-leeway
-left
-lefthanded
-lefthandedly
-lefthandedness
-lefthander
-lefthanders
-lefties
-leftish
-leftist
-leftists
-leftmost
-leftover
-leftovers
-lefts
-leftward
-leftwards
-lefty
-leg
-legacies
-legacy
-legal
-legalese
-legalisation
-legalise
-legalised
-legalising
-legalism
-legalistic
-legalities
-legality
-legally
-legate
-legatee
-legatees
-legates
-legation
-legato
-legator
-legend
-legendary
-legends
-legerdemain
-legged
-legging
-leggings
-leggy
-leghorn
-leghorns
-legibility
-legible
-legibly
-legion
-legionaries
-legionary
-legionnaires
-legions
-legislate
-legislated
-legislating
-legislation
-legislative
-legislatively
-legislator
-legislators
-legislature
-legislatures
-legitimacy
-legitimate
-legitimated
-legitimately
-legitimating
-legitimation
-legitimisation
-legitimise
-legitimised
-legitimising
-legless
-legman
-legroom
-legs
-legume
-legumes
-leguminous
-legwork
-leipzig
-leisure
-leisured
-leisurely
-leisurewear
-leitmotif
-leitmotifs
-leitmotiv
-leitmotivs
-lemma
-lemmas
-lemming
-lemmings
-lemon
-lemonade
-lemons
-lemur
-lemurs
-lend
-lender
-lenders
-lending
-lends
-length
-lengthen
-lengthened
-lengthening
-lengthens
-lengthier
-lengthiest
-lengthily
-lengths
-lengthways
-lengthwise
-lengthy
-leniency
-lenient
-leniently
-lenin
-lens
-lenses
-lensing
-lent
-lentil
-lentils
-lento
-leonardo
-leone
-leopard
-leopards
-leopardskin
-leotard
-leotards
-leper
-lepers
-leprechaun
-leprechauns
-leprose
-leprosy
-leprous
-lepton
-leptons
-lesbian
-lesbianism
-lesbians
-lesion
-lesions
-lesotho
-less
-lessee
-lessees
-lessen
-lessened
-lessening
-lessens
-lesser
-lesson
-lessons
-lessor
-lessors
-lest
-let
-lethal
-lethality
-lethally
-lethargic
-lethargically
-lethargy
-lets
-letter
-letterbox
-letterboxes
-lettered
-letterhead
-letterheads
-lettering
-letterpress
-letters
-letterwriter
-letting
-lettings
-lettish
-lettuce
-lettuces
-leucine
-leukaemia
-leukemia
-level
-levelheaded
-levelled
-leveller
-levelling
-levelly
-levels
-lever
-leverage
-leveraged
-levered
-levering
-levers
-levi
-leviathan
-levied
-levies
-levitate
-levitated
-levitates
-levitating
-levitation
-levity
-levy
-levying
-lewd
-lewdness
-lexeme
-lexemes
-lexical
-lexically
-lexicographer
-lexicographers
-lexicographic
-lexicographical
-lexicographically
-lexicography
-lexicon
-lexicons
-leyden
-liabilities
-liability
-liable
-liaise
-liaised
-liaises
-liaising
-liaison
-liaisons
-liar
-liars
-libation
-libations
-libel
-libeled
-libeler
-libelled
-libeller
-libelling
-libellous
-libels
-liberal
-liberalisation
-liberalise
-liberalised
-liberalising
-liberalism
-liberality
-liberally
-liberals
-liberate
-liberated
-liberates
-liberating
-liberation
-liberationists
-liberator
-liberators
-liberia
-libero
-libertarian
-libertarianism
-libertarians
-liberties
-libertine
-libertines
-liberty
-libidinous
-libido
-librarian
-librarians
-librarianship
-libraries
-library
-librate
-librated
-librates
-libretti
-librettist
-librettists
-libretto
-libya
-libyan
-libyans
-lice
-licence
-licences
-license
-licensed
-licensee
-licensees
-licenses
-licensing
-licentiate
-licentious
-licentiousness
-lichee
-lichen
-lichened
-lichens
-lichi
-lichis
-lick
-licked
-lickerish
-licking
-licks
-licorice
-lid
-lidded
-lidless
-lido
-lids
-lie
-lied
-lieder
-lien
-liens
-lies
-lieu
-lieutenancy
-lieutenant
-lieutenants
-life
-lifeanddeath
-lifebelt
-lifeblood
-lifeboat
-lifeboatmen
-lifeboats
-lifeforms
-lifegiving
-lifeguard
-lifeguards
-lifeless
-lifelessly
-lifelessness
-lifelike
-lifeline
-lifelines
-lifelong
-liferaft
-liferafts
-lifesaving
-lifesize
-lifesized
-lifespan
-lifespans
-lifestyle
-lifestyles
-lifetaking
-lifethreatening
-lifetime
-lifetimes
-lifework
-lift
-lifted
-lifter
-lifters
-lifting
-liftman
-liftmen
-liftoff
-lifts
-ligament
-ligaments
-ligand
-ligands
-ligature
-ligatured
-ligatures
-ligaturing
-light
-lighted
-lighten
-lightened
-lightening
-lightens
-lighter
-lighters
-lightest
-lightheaded
-lightheadedness
-lighthearted
-lightheartedly
-lightheartedness
-lighthouse
-lighthouses
-lighting
-lightless
-lightly
-lightness
-lightning
-lights
-lightship
-lightweight
-lightweights
-lignite
-likable
-like
-likeability
-likeable
-liked
-likelier
-likeliest
-likelihood
-likely
-likeminded
-liken
-likened
-likeness
-likenesses
-likening
-likens
-likes
-likewise
-liking
-likings
-lilac
-lilacs
-lilies
-lilliput
-lilliputian
-lilongwe
-lilt
-lilting
-lily
-lilylivered
-lilywhite
-lima
-limb
-limber
-limbering
-limbers
-limbless
-limbo
-limbs
-lime
-limekiln
-limelight
-limerick
-limericks
-limes
-limestone
-limestones
-limeys
-liminal
-liming
-limit
-limitation
-limitations
-limited
-limiter
-limiters
-limiting
-limitless
-limits
-limo
-limousin
-limousine
-limousines
-limp
-limped
-limpet
-limpets
-limpid
-limping
-limply
-limpopo
-limps
-linage
-linchpin
-lincoln
-linden
-line
-lineage
-lineages
-lineally
-lineaments
-linear
-linearised
-linearity
-linearly
-lined
-linefeed
-lineman
-linemen
-linen
-linens
-lineout
-lineouts
-liner
-liners
-lines
-linesman
-linesmen
-lineup
-lineups
-linger
-lingered
-lingerer
-lingerie
-lingering
-lingeringly
-lingers
-lingua
-lingual
-linguist
-linguistic
-linguistically
-linguistics
-linguists
-liniment
-liniments
-lining
-linings
-link
-linkable
-linkage
-linkages
-linked
-linker
-linkers
-linking
-links
-linkup
-linkups
-linnet
-linnets
-lino
-linoleum
-linseed
-lint
-lintel
-lintels
-liny
-lion
-lioness
-lionesses
-lionise
-lionised
-lions
-lip
-lipase
-lipid
-lipids
-lipped
-lipread
-lipreading
-lips
-lipservice
-lipstick
-lipsticks
-liquefaction
-liquefied
-liquefy
-liqueur
-liqueurs
-liquid
-liquidate
-liquidated
-liquidating
-liquidation
-liquidations
-liquidator
-liquidators
-liquidise
-liquidised
-liquidiser
-liquidising
-liquidity
-liquids
-liquify
-liquor
-liquorice
-liquorish
-liquors
-lira
-lire
-lisbon
-lisp
-lisped
-lisping
-lisps
-lissom
-lissome
-lissomeness
-lissomness
-list
-listed
-listen
-listened
-listener
-listeners
-listening
-listens
-listeria
-listing
-listings
-listless
-listlessly
-listlessness
-lists
-lit
-litanies
-litany
-litchi
-literacy
-literal
-literalism
-literalistic
-literally
-literals
-literary
-literate
-literati
-literature
-literatures
-lithe
-lithely
-lithium
-lithograph
-lithographic
-lithographs
-lithography
-lithological
-lithologies
-lithology
-lithosphere
-litigant
-litigants
-litigate
-litigating
-litigation
-litigious
-litigiousness
-litmus
-litotes
-litre
-litres
-litter
-littered
-littering
-litters
-little
-littleness
-littler
-littlest
-littoral
-liturgical
-liturgies
-liturgy
-livable
-live
-liveable
-lived
-livelier
-liveliest
-livelihood
-livelihoods
-liveliness
-lively
-liven
-livened
-livening
-livens
-liver
-liveried
-liveries
-liverish
-livers
-liverworts
-livery
-lives
-livestock
-livewire
-livid
-lividly
-living
-livings
-lizard
-lizards
-llama
-llamas
-lls
-load
-loadable
-loaded
-loader
-loaders
-loading
-loadings
-loads
-loaf
-loafed
-loafer
-loafers
-loafing
-loafs
-loam
-loams
-loamy
-loan
-loanable
-loaned
-loaner
-loaning
-loans
-loanword
-loanwords
-loath
-loathe
-loathed
-loathes
-loathing
-loathsome
-loathsomely
-loathsomeness
-loaves
-lob
-lobbed
-lobbied
-lobbies
-lobbing
-lobby
-lobbying
-lobbyist
-lobbyists
-lobe
-lobed
-lobelia
-lobes
-lobotomies
-lobotomised
-lobotomising
-lobotomist
-lobotomy
-lobs
-lobster
-lobsters
-lobular
-local
-locale
-locales
-localisation
-localisations
-localise
-localised
-localises
-localising
-localities
-locality
-locally
-locals
-locatable
-locate
-located
-locates
-locating
-location
-locational
-locations
-locative
-locator
-locators
-loch
-lochness
-lochs
-loci
-lock
-lockable
-lockage
-locked
-locker
-lockers
-locket
-locking
-lockjaw
-lockout
-lockouts
-locks
-locksmith
-loco
-locomote
-locomotion
-locomotive
-locomotives
-locus
-locust
-locusts
-lode
-lodestar
-lodestone
-lodge
-lodged
-lodgement
-lodger
-lodgers
-lodges
-lodging
-lodgings
-loess
-loft
-lofted
-loftier
-loftiest
-loftily
-loftiness
-lofts
-lofty
-log
-loganberries
-loganberry
-logarithm
-logarithmic
-logarithmically
-logarithms
-logbook
-logbooks
-logged
-logger
-loggerheads
-loggers
-logging
-logic
-logical
-logicality
-logically
-logician
-logicians
-logics
-logistic
-logistical
-logistically
-logistics
-logjam
-logo
-logoff
-logos
-logs
-loin
-loincloth
-loins
-loire
-loiter
-loitered
-loiterer
-loiterers
-loitering
-loiters
-loll
-lolled
-lollies
-lolling
-lollipop
-lollipops
-lolly
-london
-londoner
-lone
-lonelier
-loneliest
-loneliness
-lonely
-loner
-loners
-lonesome
-lonesomeness
-long
-longawaited
-longed
-longer
-longest
-longevity
-longfaced
-longhand
-longing
-longingly
-longings
-longish
-longitude
-longitudes
-longitudinal
-longitudinally
-longlasting
-longlived
-longlost
-longs
-longstanding
-longsuffering
-longwinded
-longwindedness
-loo
-look
-lookalike
-lookalikes
-looked
-looker
-lookers
-looking
-lookingglass
-lookingglasses
-lookout
-lookouts
-looks
-loom
-loomed
-looming
-looms
-loon
-looney
-loony
-loop
-looped
-loophole
-loopholes
-looping
-loops
-loopy
-loose
-loosed
-loosely
-loosen
-loosened
-looseness
-loosening
-loosens
-looser
-looses
-loosest
-loosing
-loot
-looted
-looter
-looters
-looting
-loots
-lop
-lope
-loped
-lopes
-loping
-lopped
-lopper
-loppers
-lopping
-lopsided
-lopsidedly
-loquacious
-loquacity
-lord
-lording
-lordly
-lords
-lordship
-lordships
-lore
-lorelei
-lorries
-lorry
-lorryload
-lorryloads
-losable
-lose
-loser
-losers
-loses
-losing
-losings
-loss
-losses
-lost
-lot
-loth
-lotion
-lotions
-lots
-lotteries
-lottery
-lotto
-lotus
-louche
-loud
-louder
-loudest
-loudhailer
-loudhailers
-loudly
-loudmouthed
-loudness
-loudspeaker
-loudspeakers
-louis
-lounge
-lounged
-lounger
-loungers
-lounges
-lounging
-louse
-lousiest
-lousily
-lousy
-lout
-loutish
-loutishness
-louts
-louver
-louvers
-louvre
-louvred
-louvres
-lovable
-love
-loveable
-lovebirds
-loved
-loveless
-lovelier
-lovelies
-loveliest
-loveliness
-lovelorn
-lovely
-lovemaking
-lover
-lovers
-loves
-lovesick
-lovestruck
-loving
-lovingly
-low
-lower
-lowercase
-lowered
-lowering
-lowers
-lowest
-lowing
-lowish
-lowkey
-lowland
-lowlanders
-lowlands
-lowlier
-lowliest
-lowly
-lowlying
-lowness
-lowpitched
-lows
-lowspirited
-loyal
-loyalist
-loyalists
-loyally
-loyalties
-loyalty
-lozenge
-lozenges
-luanda
-lubber
-lubbers
-lubricant
-lubricants
-lubricate
-lubricated
-lubricates
-lubricating
-lubrication
-lubricious
-lucid
-lucidity
-lucidly
-lucifer
-luck
-luckier
-luckiest
-luckily
-luckless
-lucky
-lucrative
-lucre
-ludicrous
-ludicrously
-ludicrousness
-ludo
-lug
-luggage
-lugged
-lugging
-lugs
-lugubrious
-lugubriously
-luke
-lukewarm
-lull
-lullabies
-lullaby
-lulled
-lulling
-lulls
-lulu
-lumbago
-lumbar
-lumber
-lumbered
-lumbering
-lumberjack
-lumberjacks
-lumbers
-lumen
-luminal
-luminance
-luminaries
-luminary
-luminescence
-luminescent
-luminosities
-luminosity
-luminous
-luminously
-lump
-lumped
-lumpen
-lumpier
-lumpiest
-lumpiness
-lumping
-lumpish
-lumps
-lumpy
-luna
-lunacies
-lunacy
-lunar
-lunate
-lunatic
-lunatics
-lunch
-lunched
-luncheon
-luncheons
-lunchers
-lunches
-lunching
-lunchpack
-lunchtime
-lunchtimes
-lune
-lung
-lunge
-lunged
-lunges
-lungfish
-lungful
-lungfuls
-lunging
-lungs
-lupin
-lupines
-lupins
-lur
-lurch
-lurched
-lurchers
-lurches
-lurching
-lure
-lured
-lures
-lurex
-lurid
-luridly
-luring
-lurk
-lurked
-lurker
-lurkers
-lurking
-lurks
-lusaka
-luscious
-lusciously
-lush
-lusher
-lushest
-lushness
-lust
-lusted
-lustful
-lustfully
-lustier
-lustiest
-lustily
-lusting
-lustre
-lustreless
-lustrous
-lusts
-lusty
-lute
-lutes
-luther
-lux
-luxor
-luxuriance
-luxuriant
-luxuriantly
-luxuriate
-luxuriating
-luxuries
-luxurious
-luxuriously
-luxury
-lychee
-lychees
-lye
-lying
-lymph
-lymphatic
-lymphocyte
-lymphocytes
-lymphocytic
-lymphoid
-lymphoma
-lymphomas
-lynch
-lynched
-lynches
-lynching
-lynchpin
-lynx
-lynxes
-lyon
-lyons
-lyra
-lyre
-lyres
-lyric
-lyrical
-lyrically
-lyricism
-lyricist
-lyricists
-lyrics
-lyrist
-lysine
-mac
-macabre
-macaque
-macaques
-macaroni
-macaroon
-macaroons
-macaw
-macaws
-mace
-maces
-machete
-machetes
-machination
-machinations
-machine
-machined
-machinegun
-machineguns
-machinery
-machines
-machinist
-machinists
-machismo
-macho
-macintosh
-macintoshes
-mackerel
-mackintosh
-mackintoshes
-macro
-macrobiotic
-macrocosm
-macroeconomic
-macroeconomics
-macromolecular
-macromolecules
-macron
-macrophage
-macrophages
-macroscopic
-macroscopically
-mad
-madam
-madame
-madams
-madcap
-madden
-maddened
-maddening
-maddeningly
-maddens
-madder
-maddest
-made
-madeira
-mademoiselle
-madhouse
-madly
-madman
-madmen
-madness
-madras
-madrid
-madrigal
-madrigals
-madwoman
-maelstrom
-maestro
-mafia
-mafiosi
-mag
-magazine
-magazines
-magenta
-maggot
-maggots
-magi
-magic
-magical
-magically
-magician
-magicians
-magics
-magisterial
-magisterially
-magistrate
-magistrates
-magma
-magmas
-magmatic
-magnanimity
-magnanimosity
-magnanimous
-magnanimously
-magnate
-magnates
-magnesia
-magnesium
-magnet
-magnetic
-magnetically
-magnetisation
-magnetise
-magnetised
-magnetism
-magnetite
-magneto
-magnetodynamics
-magnetohydrodynamical
-magnetohydrodynamics
-magnetometer
-magnetometers
-magnetosphere
-magnetron
-magnets
-magnification
-magnifications
-magnificence
-magnificent
-magnificently
-magnified
-magnifier
-magnifies
-magnify
-magnifying
-magniloquent
-magnitude
-magnitudes
-magnolia
-magnolias
-magnum
-magnums
-magpie
-magpies
-mags
-mahatma
-mahogany
-maid
-maiden
-maidenly
-maidens
-maids
-maidservant
-maidservants
-mail
-mailable
-mailbox
-mailed
-mailer
-mailing
-mailings
-mailman
-mailmen
-mailorder
-mails
-mailshot
-mailshots
-maim
-maimed
-maiming
-maimings
-maims
-main
-mainbrace
-maine
-mainframe
-mainframes
-mainland
-mainline
-mainly
-mains
-mainsail
-mainspring
-mainstay
-mainstays
-mainstream
-maintain
-maintainability
-maintainable
-maintained
-maintainer
-maintainers
-maintaining
-maintains
-maintenance
-maisonette
-maisonettes
-maize
-maizes
-majestic
-majestically
-majesties
-majesty
-majolica
-major
-majorette
-majorettes
-majorities
-majority
-majors
-make
-makeover
-maker
-makers
-makes
-makeshift
-makeup
-makeweight
-making
-makings
-malachite
-maladaptive
-maladies
-maladjusted
-maladjustment
-maladministration
-maladroit
-malady
-malaise
-malaria
-malarial
-malathion
-malawi
-malay
-malayan
-malays
-malaysia
-malcontent
-malcontents
-maldives
-male
-malefaction
-malefactions
-malefactor
-malefactors
-maleness
-males
-malevolence
-malevolent
-malevolently
-malformation
-malformations
-malformed
-malfunction
-malfunctioned
-malfunctioning
-malfunctions
-malice
-malices
-malicious
-maliciously
-maliciousness
-malign
-malignancies
-malignancy
-malignant
-malignantly
-maligned
-maligners
-maligning
-malignity
-maligns
-malingerers
-malingering
-mall
-mallard
-mallards
-malleability
-malleable
-mallet
-mallets
-mallow
-malls
-malnourished
-malnourishment
-malnutrition
-malodorous
-malpractice
-malpractices
-malt
-malta
-malted
-maltese
-malting
-maltreat
-maltreated
-maltreatment
-malts
-malty
-malva
-mama
-mamas
-mamba
-mambas
-mammal
-mammalia
-mammalian
-mammals
-mammary
-mammoth
-mammoths
-mammy
-man
-manacle
-manacled
-manacles
-manage
-manageability
-manageable
-managed
-management
-managements
-manager
-manageress
-manageresses
-managerial
-managerially
-managers
-managership
-manages
-managing
-manatee
-manciple
-mandarin
-mandarins
-mandate
-mandated
-mandates
-mandating
-mandatory
-mandela
-mandible
-mandibles
-mandibular
-mandolin
-mandolins
-mandrake
-mandril
-mandrill
-mane
-maned
-manes
-maneuver
-manfully
-manganese
-mange
-manger
-mangers
-mangle
-mangled
-mangler
-mangles
-mangling
-mango
-mangrove
-mangroves
-manhandle
-manhandled
-manhandling
-manhole
-manholes
-manhood
-manhunt
-manhunts
-mania
-maniac
-maniacal
-maniacally
-maniacs
-manias
-manic
-manically
-manicdepressive
-manicure
-manicured
-manifest
-manifestation
-manifestations
-manifested
-manifesting
-manifestly
-manifesto
-manifests
-manifold
-manifolds
-manikin
-manila
-manipulable
-manipulate
-manipulated
-manipulates
-manipulating
-manipulation
-manipulations
-manipulative
-manipulator
-manipulators
-mankind
-manliest
-manliness
-manly
-manmade
-manna
-manned
-mannequin
-mannequins
-manner
-mannered
-mannerism
-mannerisms
-mannerist
-mannerliness
-mannerly
-manners
-manning
-manoeuvrability
-manoeuvrable
-manoeuvre
-manoeuvred
-manoeuvres
-manoeuvring
-manoeuvrings
-manometer
-manor
-manorial
-manors
-manpower
-manse
-manservant
-mansion
-mansions
-mansized
-manslaughter
-mantel
-mantelpiece
-mantelpieces
-mantelshelf
-mantids
-mantis
-mantissa
-mantissas
-mantle
-mantled
-mantles
-mantling
-mantra
-mantrap
-mantraps
-mantras
-manual
-manually
-manuals
-manufacture
-manufactured
-manufacturer
-manufacturers
-manufactures
-manufacturing
-manure
-manured
-manures
-manuring
-manuscript
-manuscripts
-many
-maoism
-maoist
-maoists
-maori
-map
-maple
-maples
-mappable
-mapped
-mapper
-mappers
-mapping
-mappings
-maps
-maputo
-maquettes
-mar
-mara
-marathon
-marathons
-marauders
-marauding
-marble
-marbled
-marbles
-march
-marched
-marcher
-marchers
-marches
-marching
-marchioness
-mare
-mares
-margarine
-margarines
-margate
-margin
-marginal
-marginalia
-marginalisation
-marginalise
-marginalised
-marginalises
-marginalising
-marginality
-marginally
-marginals
-margins
-maria
-marigold
-marigolds
-marijuana
-marina
-marinade
-marinas
-marinate
-marinated
-marine
-mariner
-mariners
-marines
-marionette
-marionettes
-marital
-maritime
-mark
-marked
-markedly
-marker
-markers
-market
-marketability
-marketable
-marketed
-marketeer
-marketeers
-marketer
-marketing
-marketplace
-markets
-marking
-markings
-marks
-marksman
-marksmanship
-marksmen
-markup
-markups
-marl
-marls
-marmalade
-marmoset
-marmosets
-marmot
-marmots
-maroon
-marooned
-marooning
-maroons
-marque
-marquee
-marquees
-marques
-marquess
-marquetry
-marquis
-marred
-marriage
-marriageable
-marriages
-married
-marries
-marring
-marrow
-marrows
-marry
-marrying
-mars
-marsala
-marsh
-marshal
-marshalled
-marshaller
-marshalling
-marshals
-marshes
-marshgas
-marshier
-marshiest
-marshiness
-marshland
-marshmallow
-marshmallows
-marshy
-marsupial
-marsupials
-mart
-marten
-martens
-martial
-martian
-martians
-martin
-martinet
-martingale
-martingales
-martini
-martins
-martyr
-martyrdom
-martyred
-martyrs
-martyry
-marvel
-marvelled
-marvelling
-marvellous
-marvellously
-marvels
-marx
-marxism
-marxist
-marxists
-mary
-marzipan
-mas
-mascara
-mascot
-mascots
-masculine
-masculinity
-maser
-maseru
-mash
-mashed
-masher
-mashing
-mask
-masked
-masking
-masks
-masochism
-masochist
-masochistic
-masochistically
-masochists
-mason
-masonic
-masonry
-masons
-masque
-masquerade
-masqueraded
-masquerades
-masquerading
-masques
-mass
-massacre
-massacred
-massacres
-massacring
-massage
-massaged
-massager
-massages
-massaging
-massed
-masses
-masseur
-masseurs
-masseuse
-masseuses
-massif
-massing
-massive
-massively
-massless
-massproduced
-massproducing
-mast
-mastectomy
-masted
-master
-masterclass
-mastered
-masterful
-masterfully
-mastering
-masterly
-mastermind
-masterminded
-masterminding
-masterpiece
-masterpieces
-masters
-mastership
-masterwork
-masterworks
-mastery
-masthead
-masticating
-mastication
-mastiff
-mastitis
-mastodon
-mastodons
-mastoid
-mastoids
-masts
-mat
-matador
-matadors
-match
-matchable
-matchbox
-matchboxes
-matched
-matcher
-matches
-matching
-matchless
-matchmaker
-matchmaking
-matchplay
-matchstick
-matchsticks
-mate
-mated
-mater
-material
-materialisation
-materialise
-materialised
-materialises
-materialising
-materialism
-materialist
-materialistic
-materialistically
-materialists
-materiality
-materially
-materials
-maternal
-maternally
-maternity
-mates
-math
-mathematical
-mathematically
-mathematician
-mathematicians
-mathematics
-maths
-matinee
-matinees
-mating
-matings
-matins
-matriarch
-matriarchal
-matriarchies
-matriarchy
-matrices
-matriculate
-matriculated
-matriculating
-matriculation
-matrilineal
-matrimonial
-matrimonially
-matrimony
-matrix
-matrixes
-matron
-matronly
-matrons
-mats
-matt
-matte
-matted
-matter
-mattered
-mattering
-matteroffact
-matters
-matthew
-matting
-mattress
-mattresses
-maturation
-maturational
-mature
-matured
-maturely
-maturer
-matures
-maturing
-maturity
-maudlin
-maul
-mauled
-mauler
-maulers
-mauling
-mauls
-maumau
-mausoleum
-mausoleums
-mauve
-maverick
-mavericks
-maw
-mawkish
-mawkishness
-maxi
-maxim
-maxima
-maximal
-maximality
-maximally
-maximisation
-maximise
-maximised
-maximiser
-maximises
-maximising
-maxims
-maximum
-may
-maya
-mayas
-maybe
-mayday
-maydays
-mayflies
-mayflower
-mayfly
-mayhap
-mayhem
-mayonnaise
-mayor
-mayoral
-mayoralty
-mayoress
-mayors
-maypole
-maze
-mazes
-mazier
-maziest
-mazurka
-mazy
-mbabane
-me
-mead
-meadow
-meadowland
-meadows
-meagre
-meagrely
-meagreness
-meal
-mealie
-mealies
-meals
-mealtime
-mealtimes
-mealy
-mean
-meander
-meandered
-meandering
-meanderings
-meanders
-meaner
-meanest
-meanie
-meanies
-meaning
-meaningful
-meaningfully
-meaningfulness
-meaningless
-meaninglessly
-meaninglessness
-meanings
-meanly
-meanness
-means
-meant
-meantime
-meanwhile
-meany
-measles
-measly
-measurable
-measurably
-measure
-measured
-measureless
-measurement
-measurements
-measures
-measuring
-meat
-meataxe
-meatball
-meatballs
-meatier
-meatiest
-meatless
-meatpie
-meats
-meaty
-mecca
-mechanic
-mechanical
-mechanically
-mechanicals
-mechanics
-mechanisable
-mechanisation
-mechanise
-mechanised
-mechanising
-mechanism
-mechanisms
-mechanist
-mechanistic
-mechanistically
-medal
-medallion
-medallions
-medallist
-medallists
-medals
-meddle
-meddled
-meddler
-meddlers
-meddles
-meddlesome
-meddling
-media
-mediaeval
-medial
-medially
-median
-medians
-mediate
-mediated
-mediates
-mediating
-mediation
-mediator
-mediators
-mediatory
-medic
-medical
-medically
-medicals
-medicate
-medicated
-medication
-medications
-medicinal
-medicine
-medicines
-medics
-medieval
-medievalist
-medievalists
-mediocre
-mediocrity
-meditate
-meditated
-meditates
-meditating
-meditation
-meditations
-meditative
-meditatively
-meditator
-medium
-mediums
-mediumsized
-medlar
-medley
-medleys
-medulla
-medusa
-meek
-meeker
-meekest
-meekly
-meekness
-meet
-meeter
-meeting
-meetings
-meets
-mega
-megabyte
-megabytes
-megahertz
-megajoules
-megalith
-megalithic
-megalomania
-megalomaniac
-megalomaniacs
-megaparsec
-megaphone
-megastar
-megaton
-megatons
-megavolt
-megawatt
-megawatts
-meiosis
-meiotic
-melancholia
-melancholic
-melancholies
-melancholy
-melange
-melanin
-melanoma
-melanomas
-melatonin
-meld
-melee
-mellifluous
-mellifluously
-mellifluousness
-mellow
-mellowed
-mellower
-mellowing
-mellows
-melodic
-melodically
-melodies
-melodious
-melodiously
-melodrama
-melodramas
-melodramatic
-melodramatically
-melody
-melon
-melons
-melt
-meltdown
-melted
-melter
-melting
-melts
-member
-members
-membership
-memberships
-membrane
-membranes
-memento
-memo
-memoir
-memoirs
-memorabilia
-memorable
-memorably
-memoranda
-memorandum
-memorandums
-memorial
-memorials
-memories
-memorisation
-memorise
-memorised
-memorises
-memorising
-memory
-memphis
-men
-menace
-menaced
-menaces
-menacing
-menacingly
-menagerie
-menarche
-mend
-mendacious
-mendacity
-mended
-mendel
-mendelevium
-mender
-menders
-mendicant
-mending
-mends
-menfolk
-menhir
-menhirs
-menial
-meningitis
-meniscus
-menopausal
-menopause
-menorah
-menstrual
-menstruating
-menstruation
-menswear
-mental
-mentalistic
-mentalities
-mentality
-mentally
-menthol
-mention
-mentionable
-mentioned
-mentioning
-mentions
-mentor
-mentors
-menu
-menus
-meow
-meows
-mercantile
-mercenaries
-mercenary
-merchandise
-merchandising
-merchant
-merchantability
-merchantable
-merchantman
-merchantmen
-merchants
-mercies
-merciful
-mercifully
-merciless
-mercilessly
-mercurial
-mercuric
-mercury
-mercy
-mere
-merely
-merest
-meretricious
-merge
-merged
-merger
-mergers
-merges
-merging
-meridian
-meridians
-meridional
-meringue
-meringues
-merino
-merit
-merited
-meriting
-meritocracy
-meritocratic
-meritocrats
-meritorious
-merits
-mermaid
-mermaids
-merman
-mermen
-meromorphic
-merrier
-merriest
-merrily
-merriment
-merry
-merrygoround
-merrygorounds
-merrymaking
-mescaline
-mesh
-meshed
-meshes
-meshing
-mesmeric
-mesmerised
-mesmerising
-mesolithic
-meson
-mesons
-mesosphere
-mesozoic
-mess
-message
-messages
-messaging
-messed
-messenger
-messengers
-messes
-messiah
-messier
-messiest
-messily
-messiness
-messing
-messy
-mestizo
-met
-metabolic
-metabolically
-metabolise
-metabolised
-metabolises
-metabolism
-metabolisms
-metal
-metalanguage
-metalinguistic
-metalled
-metallic
-metallised
-metallurgical
-metallurgist
-metallurgy
-metals
-metalwork
-metalworking
-metamorphic
-metamorphism
-metamorphose
-metamorphosed
-metamorphoses
-metamorphosis
-metaphor
-metaphoric
-metaphorical
-metaphorically
-metaphors
-metaphysical
-metaphysically
-metaphysics
-metastability
-metastable
-metastases
-metastasis
-metastatic
-metatarsal
-meted
-metempsychosis
-meteor
-meteoric
-meteorite
-meteorites
-meteoritic
-meteorological
-meteorologist
-meteorologists
-meteorology
-meteors
-meter
-metered
-metering
-meters
-methadone
-methane
-methanol
-methionine
-method
-methodical
-methodically
-methodological
-methodologically
-methodologies
-methodology
-methods
-methyl
-methylated
-methylene
-meticulous
-meticulously
-metier
-metonymic
-metonymy
-metre
-metres
-metric
-metrical
-metrically
-metrication
-metrics
-metro
-metronome
-metronomes
-metronomic
-metropolis
-metropolises
-metropolitan
-mettle
-mew
-mewing
-mews
-mexican
-mexicans
-mexico
-mezzanine
-mezzosoprano
-miami
-miasma
-mica
-mice
-micelles
-michigan
-micro
-microanalyses
-microbe
-microbes
-microbial
-microbic
-microbiological
-microbiologist
-microbiologists
-microbiology
-microchip
-microchips
-microcode
-microcomputer
-microcomputers
-microcosm
-microcosmic
-microdensitometer
-microdot
-microelectronic
-microelectronics
-microfarad
-microfiche
-microfilm
-microfilming
-microgrammes
-micrograms
-micrograph
-micrographs
-microgravity
-microhydrodynamics
-microlight
-micrometer
-micrometers
-micrometres
-micron
-microns
-microorganism
-microorganisms
-microphone
-microphones
-microprocessor
-microprocessors
-microprogram
-microscope
-microscopes
-microscopic
-microscopically
-microscopist
-microscopy
-microsecond
-microseconds
-microsurgery
-microwave
-microwaveable
-microwaved
-microwaves
-micturition
-mid
-midafternoon
-midair
-midas
-midday
-middays
-midden
-middle
-middleage
-middleaged
-middleclass
-middleman
-middlemen
-middleoftheroad
-middles
-middlesized
-middleweight
-middling
-midevening
-midfield
-midfielder
-midfielders
-midflight
-midge
-midges
-midget
-midgets
-midi
-midland
-midlands
-midlife
-midline
-midmorning
-midmost
-midnight
-midnights
-midribs
-midriff
-midship
-midshipman
-midships
-midst
-midstream
-midsummer
-midway
-midweek
-midwicket
-midwife
-midwifery
-midwinter
-midwives
-mien
-might
-mightier
-mightiest
-mightily
-mights
-mighty
-migraine
-migraines
-migrant
-migrants
-migrate
-migrated
-migrates
-migrating
-migration
-migrations
-migratory
-mike
-mikes
-milady
-milan
-mild
-milder
-mildest
-mildew
-mildewed
-mildews
-mildewy
-mildly
-mildmannered
-mildness
-mile
-mileage
-mileages
-milepost
-mileposts
-miler
-miles
-milestone
-milestones
-milieu
-milieus
-milieux
-militancy
-militant
-militantly
-militants
-militarily
-militarisation
-militarised
-militarism
-militarist
-militaristic
-military
-militate
-militated
-militates
-militating
-militia
-militiaman
-militiamen
-militias
-milk
-milked
-milker
-milkers
-milkier
-milkiest
-milking
-milkmaid
-milkmaids
-milkman
-milkmen
-milks
-milkshake
-milkshakes
-milky
-milkyway
-mill
-milled
-millenarian
-millenarianism
-millennia
-millennial
-millennium
-miller
-millers
-millet
-millibars
-milligram
-milligrams
-millilitres
-millimetre
-millimetres
-milliner
-milliners
-millinery
-milling
-million
-millionaire
-millionaires
-millions
-millionth
-millionths
-millipede
-millipedes
-millisecond
-milliseconds
-millpond
-mills
-millstone
-millstones
-milord
-milt
-mime
-mimed
-mimeographed
-mimes
-mimetic
-mimic
-mimicked
-mimicker
-mimicking
-mimicry
-mimics
-miming
-mimosa
-minaret
-minarets
-mince
-minced
-mincemeat
-mincer
-mincers
-minces
-mincing
-mind
-mindboggling
-mindbogglingly
-minded
-mindedness
-minder
-minders
-mindful
-minding
-mindless
-mindlessly
-mindlessness
-mindreader
-minds
-mindset
-mine
-mined
-minedetector
-minefield
-minefields
-miner
-mineral
-mineralisation
-mineralised
-mineralogical
-mineralogy
-minerals
-miners
-mines
-mineshaft
-minestrone
-minesweeper
-minesweepers
-mineworkers
-mingle
-mingled
-mingles
-mingling
-mini
-miniature
-miniatures
-miniaturisation
-miniaturise
-miniaturised
-miniaturises
-miniaturising
-miniaturist
-minibar
-minibus
-minibuses
-minicab
-minicomputer
-minicomputers
-minify
-minim
-minima
-minimal
-minimalism
-minimalist
-minimalistic
-minimalists
-minimality
-minimally
-minimisation
-minimise
-minimised
-minimiser
-minimises
-minimising
-minimum
-mining
-minings
-minion
-minions
-miniskirt
-minister
-ministered
-ministerial
-ministerially
-ministering
-ministers
-ministration
-ministrations
-ministries
-ministry
-mink
-minke
-minks
-minnow
-minnows
-minor
-minorities
-minority
-minors
-minster
-minstrel
-minstrels
-mint
-minted
-mintier
-mintiest
-minting
-mints
-minty
-minuet
-minuets
-minus
-minuscule
-minuses
-minute
-minuted
-minutely
-minuteness
-minutes
-minutest
-minutiae
-minx
-minxes
-miosis
-miracle
-miracles
-miraculous
-miraculously
-miraculousness
-mirage
-mirages
-mire
-mired
-mires
-mirror
-mirrored
-mirroring
-mirrors
-mirth
-mirthful
-mirthless
-mirthlessly
-misadventure
-misaligned
-misalignment
-misanalysed
-misanthrope
-misanthropes
-misanthropic
-misanthropists
-misanthropy
-misapplication
-misapply
-misapprehension
-misapprehensions
-misappropriated
-misappropriation
-misbegotten
-misbehave
-misbehaved
-misbehaves
-misbehaving
-misbehaviour
-miscalculate
-miscalculated
-miscalculation
-miscalculations
-miscarriage
-miscarriages
-miscarried
-miscarry
-miscarrying
-miscast
-miscasting
-miscegenation
-miscellanea
-miscellaneous
-miscellanies
-miscellany
-mischance
-mischief
-mischiefmakers
-mischiefmaking
-mischievous
-mischievously
-miscible
-misclassified
-miscomprehended
-misconceived
-misconception
-misconceptions
-misconduct
-misconfiguration
-misconstrued
-miscopying
-miscount
-miscounted
-miscounting
-miscreant
-miscreants
-miscue
-miscues
-misdate
-misdeal
-misdealing
-misdeed
-misdeeds
-misdemeanour
-misdemeanours
-misdiagnosis
-misdirect
-misdirected
-misdirecting
-misdirection
-misdirections
-misdoing
-miser
-miserable
-miserably
-miseries
-miserliness
-miserly
-misers
-misery
-misfield
-misfiled
-misfire
-misfired
-misfires
-misfit
-misfits
-misfortune
-misfortunes
-misgive
-misgiving
-misgivings
-misgovernment
-misguide
-misguided
-misguidedly
-mishandle
-mishandled
-mishandles
-mishandling
-mishap
-mishaps
-mishear
-misheard
-mishearing
-mishears
-mishitting
-misidentification
-misinform
-misinformation
-misinformed
-misinterpret
-misinterpretation
-misinterpretations
-misinterpreted
-misinterpreting
-misinterprets
-misjudge
-misjudged
-misjudgement
-misjudgements
-misjudging
-misjudgment
-mislabelled
-mislaid
-mislay
-mislead
-misleading
-misleadingly
-misleads
-misled
-mismanage
-mismanaged
-mismanagement
-mismatch
-mismatched
-mismatches
-mismatching
-misname
-misnamed
-misnomer
-misnomers
-misogynist
-misogynistic
-misogynists
-misogyny
-misplace
-misplaced
-misplacement
-misplaces
-misplacing
-mispositioned
-misprint
-misprinted
-misprinting
-misprints
-mispronounced
-mispronouncing
-mispronunciation
-mispronunciations
-misquotation
-misquote
-misquoted
-misquotes
-misquoting
-misread
-misreading
-misremember
-misremembered
-misremembering
-misrepresent
-misrepresentation
-misrepresentations
-misrepresented
-misrepresenting
-misrepresents
-misrule
-miss
-missal
-missals
-missed
-misses
-misshapen
-missile
-missiles
-missing
-mission
-missionaries
-missionary
-missions
-missive
-missives
-missouri
-misspell
-misspelled
-misspelling
-misspellings
-misspells
-misspelt
-misspend
-misspent
-misstatement
-missteps
-missus
-missuses
-missy
-mist
-mistake
-mistaken
-mistakenly
-mistakes
-mistaking
-misted
-mister
-misters
-mistier
-mistiest
-mistily
-mistime
-mistimed
-mistiness
-misting
-mistletoe
-mistook
-mistranslated
-mistranslates
-mistranslating
-mistranslation
-mistranslations
-mistreat
-mistreated
-mistreating
-mistreatment
-mistress
-mistresses
-mistrust
-mistrusted
-mistrustful
-mistrustfully
-mistrusting
-mistrusts
-mists
-misty
-mistype
-mistyped
-mistypes
-mistyping
-mistypings
-misunderstand
-misunderstanding
-misunderstandings
-misunderstands
-misunderstood
-misuse
-misused
-misuser
-misuses
-misusing
-mite
-mites
-mitigate
-mitigated
-mitigates
-mitigating
-mitigation
-mitigatory
-mitochondria
-mitochondrial
-mitosis
-mitre
-mitred
-mitres
-mitt
-mitten
-mittens
-mitts
-mix
-mixable
-mixed
-mixer
-mixers
-mixes
-mixing
-mixture
-mixtures
-mixup
-mixups
-mnemonic
-mnemonically
-mnemonics
-moan
-moaned
-moaner
-moaners
-moaning
-moans
-moas
-moat
-moated
-moats
-mob
-mobbed
-mobbing
-mobbish
-mobile
-mobiles
-mobilisable
-mobilisation
-mobilise
-mobilised
-mobilises
-mobilising
-mobilities
-mobility
-mobs
-mobster
-mobsters
-moccasin
-moccasins
-mock
-mocked
-mocker
-mockeries
-mockers
-mockery
-mocking
-mockingbird
-mockingly
-mocks
-mockup
-mockups
-mod
-modal
-modalities
-modality
-mode
-model
-modelled
-modeller
-modellers
-modelling
-models
-modem
-modems
-moderate
-moderated
-moderately
-moderates
-moderating
-moderation
-moderations
-moderator
-moderators
-modern
-moderner
-modernisation
-modernisations
-modernise
-modernised
-modernising
-modernism
-modernist
-modernistic
-modernists
-modernity
-modes
-modest
-modestly
-modesty
-modicum
-modifiable
-modification
-modifications
-modified
-modifier
-modifiers
-modifies
-modify
-modifying
-modish
-modishly
-modular
-modularisation
-modularise
-modularised
-modularising
-modularity
-modulate
-modulated
-modulates
-modulating
-modulation
-modulations
-modulator
-module
-modules
-moduli
-modulus
-mogul
-moguls
-mohair
-mohairs
-moiety
-moist
-moisten
-moistened
-moistening
-moistens
-moister
-moistness
-moisture
-moisturise
-moisturiser
-moisturisers
-moisturising
-molar
-molarities
-molarity
-molars
-molasses
-mold
-molds
-moldy
-mole
-molecular
-molecule
-molecules
-molehill
-molehills
-moles
-moleskin
-molest
-molestation
-molestations
-molested
-molester
-molesters
-molesting
-molests
-mollified
-mollifies
-mollify
-mollusc
-molluscan
-molluscs
-molten
-molts
-molybdenum
-mom
-moment
-momentarily
-momentary
-momentous
-moments
-momentum
-moms
-monaco
-monadic
-monalisa
-monarch
-monarchic
-monarchical
-monarchies
-monarchist
-monarchists
-monarchs
-monarchy
-monasteries
-monastery
-monastic
-monasticism
-monaural
-monday
-mondays
-monetarism
-monetarist
-monetarists
-monetary
-money
-moneyed
-moneylender
-moneylenders
-moneyless
-moneys
-monger
-mongers
-mongol
-mongols
-mongoose
-mongrel
-mongrels
-monies
-monition
-monitor
-monitored
-monitoring
-monitors
-monk
-monkey
-monkeyed
-monkeying
-monkeys
-monkfish
-monkish
-monks
-mono
-monochromatic
-monochrome
-monocle
-monocled
-monoclonal
-monocular
-monoculture
-monocytes
-monogamous
-monogamously
-monogamy
-monogram
-monogrammed
-monograph
-monographic
-monographs
-monolayer
-monolayers
-monolingual
-monolith
-monolithic
-monoliths
-monologue
-monologues
-monomania
-monomer
-monomeric
-monomers
-monomial
-monomials
-monomolecular
-monophonic
-monophthongs
-monoplane
-monopole
-monopoles
-monopolies
-monopolisation
-monopolise
-monopolised
-monopolises
-monopolising
-monopolist
-monopolistic
-monopolists
-monopoly
-monorail
-monostable
-monosyllabic
-monosyllable
-monosyllables
-monotheism
-monotheist
-monotheistic
-monotheists
-monotone
-monotonic
-monotonically
-monotonicity
-monotonous
-monotonously
-monotony
-monoxide
-monroe
-monsieur
-monsoon
-monsoons
-monster
-monsters
-monstrosities
-monstrosity
-monstrous
-monstrously
-montage
-montages
-month
-monthlies
-monthly
-months
-montreal
-monument
-monumental
-monumentally
-monuments
-moo
-mood
-moodiest
-moodily
-moodiness
-moods
-moody
-mooed
-mooing
-moon
-moonbeam
-moonbeams
-mooning
-moonless
-moonlight
-moonlighting
-moonlit
-moonrise
-moons
-moonshine
-moonshot
-moonshots
-moonstones
-moor
-moored
-moorhen
-moorhens
-mooring
-moorings
-moorland
-moorlands
-moors
-moos
-moose
-moot
-mooted
-mop
-mope
-moped
-mopeds
-mopes
-moping
-mopped
-mopping
-mops
-moraine
-moraines
-moral
-morale
-morales
-moralise
-moralised
-moralising
-moralism
-moralist
-moralistic
-moralists
-moralities
-morality
-morally
-morals
-morass
-morasses
-moratorium
-moray
-morays
-morbid
-morbidity
-morbidly
-mordant
-more
-moreover
-mores
-morgue
-moribund
-moribundity
-moribundly
-mormon
-mormons
-morn
-morning
-mornings
-morns
-moroccan
-morocco
-moron
-moronic
-morons
-morose
-morosely
-moroseness
-morph
-morpheme
-morphemes
-morpheus
-morphia
-morphine
-morphism
-morphisms
-morphogenesis
-morphogenetic
-morphological
-morphologically
-morphologies
-morphology
-morrow
-morse
-morsel
-morsels
-mort
-mortal
-mortalities
-mortality
-mortally
-mortals
-mortar
-mortars
-mortgage
-mortgageable
-mortgaged
-mortgagee
-mortgagees
-mortgages
-mortgaging
-mortgagor
-mortice
-mortices
-mortification
-mortified
-mortify
-mortifying
-mortise
-mortises
-mortuary
-mosaic
-mosaics
-moscow
-moses
-mosque
-mosques
-mosquito
-moss
-mosses
-mossier
-mossiest
-mossy
-most
-mostly
-motel
-motels
-motes
-motet
-motets
-moth
-mothball
-mothballed
-mothballs
-motheaten
-mother
-motherboard
-motherboards
-mothered
-motherhood
-mothering
-motherinlaw
-motherland
-motherless
-motherly
-motherofpearl
-mothers
-mothersinlaw
-motherstobe
-moths
-motif
-motifs
-motile
-motility
-motion
-motional
-motioned
-motioning
-motionless
-motionlessly
-motions
-motivate
-motivated
-motivates
-motivating
-motivation
-motivational
-motivations
-motivator
-motivators
-motive
-motiveless
-motives
-motley
-motlier
-motliest
-motocross
-motor
-motorbike
-motorbikes
-motorcade
-motorcar
-motorcars
-motorcycle
-motorcycles
-motorcycling
-motorcyclist
-motorcyclists
-motored
-motoring
-motorised
-motorist
-motorists
-motors
-motorway
-motorways
-mottled
-motto
-mould
-moulded
-moulder
-mouldering
-moulders
-mouldier
-mouldiest
-moulding
-mouldings
-moulds
-mouldy
-moult
-moulted
-moulting
-moults
-mound
-mounded
-mounds
-mount
-mountable
-mountain
-mountaineer
-mountaineering
-mountaineers
-mountainous
-mountains
-mountainside
-mountainsides
-mounted
-mountie
-mounties
-mounting
-mountings
-mounts
-mourn
-mourned
-mourner
-mourners
-mournful
-mournfully
-mournfulness
-mourning
-mourns
-mouse
-mouselike
-mousetrap
-mousetraps
-mousey
-moussaka
-mousse
-mousses
-moustache
-moustached
-moustaches
-mousy
-mouth
-mouthed
-mouthful
-mouthfuls
-mouthing
-mouthorgan
-mouthparts
-mouthpiece
-mouthpieces
-mouths
-mouthtomouth
-mouthwash
-mouthwatering
-movable
-move
-moveable
-moved
-movement
-movements
-mover
-movers
-moves
-movie
-movies
-moving
-movingly
-mow
-mowed
-mower
-mowers
-mowing
-mown
-mows
-mozart
-mr
-mrs
-ms
-mu
-much
-muchness
-muck
-mucked
-mucking
-mucks
-mucky
-mucosa
-mucous
-mucus
-mud
-muddied
-muddier
-muddies
-muddiest
-muddle
-muddled
-muddles
-muddling
-muddy
-muddying
-mudflats
-mudflow
-mudflows
-mudguard
-mudguards
-mudlarks
-muds
-muesli
-muff
-muffed
-muffin
-muffins
-muffle
-muffled
-muffler
-mufflers
-muffling
-muffs
-mufti
-mug
-mugged
-mugger
-muggers
-muggier
-mugging
-muggings
-muggy
-mugs
-mugshots
-mulberries
-mulberry
-mulch
-mulches
-mulching
-mule
-mules
-mull
-mullah
-mullahs
-mulled
-mullet
-mulling
-mullioned
-mullions
-multichannel
-multicolour
-multicoloured
-multicultural
-multiculturalism
-multidimensional
-multifarious
-multiform
-multifunction
-multifunctional
-multilateral
-multilateralism
-multilayer
-multilevel
-multilingual
-multimedia
-multimeter
-multimillion
-multinational
-multinationals
-multiphase
-multiple
-multiples
-multiplex
-multiplexed
-multiplexer
-multiplexers
-multiplexes
-multiplexing
-multiplexor
-multiplexors
-multiplication
-multiplications
-multiplicative
-multiplicities
-multiplicity
-multiplied
-multiplier
-multipliers
-multiplies
-multiply
-multiplying
-multiprocessing
-multiprocessor
-multiprocessors
-multiprogramming
-multiracial
-multitude
-multitudes
-mum
-mumble
-mumbled
-mumbler
-mumbles
-mumbling
-mumblings
-mumbojumbo
-mummies
-mummification
-mummified
-mummify
-mummy
-mumps
-mums
-munch
-munched
-muncher
-munchers
-munches
-munching
-mundane
-mundanely
-munich
-municipal
-municipalities
-municipality
-munificence
-munificent
-munificently
-munition
-munitions
-muons
-mural
-murals
-murder
-murdered
-murderer
-murderers
-murderess
-murdering
-murderous
-murderously
-murders
-murk
-murkier
-murkiest
-murkiness
-murky
-murmur
-murmured
-murmurer
-murmuring
-murmurings
-murmurs
-murray
-muscadel
-muscat
-muscle
-muscled
-muscles
-muscling
-muscular
-muscularity
-musculature
-musculoskeletal
-muse
-mused
-muses
-museum
-museums
-mush
-mushes
-mushroom
-mushroomed
-mushrooming
-mushrooms
-mushy
-music
-musical
-musicality
-musically
-musicals
-musician
-musicians
-musicianship
-musicologist
-musicologists
-musicology
-musing
-musingly
-musings
-musk
-musket
-musketeer
-musketeers
-muskets
-muskier
-muskiest
-musks
-musky
-muslim
-muslims
-muslin
-mussel
-mussels
-must
-mustache
-mustang
-mustangs
-mustard
-muster
-mustered
-mustering
-musters
-mustier
-mustiest
-mustily
-mustiness
-musts
-musty
-mutability
-mutable
-mutagens
-mutant
-mutants
-mutate
-mutated
-mutates
-mutating
-mutation
-mutational
-mutations
-mute
-muted
-mutely
-muteness
-mutes
-mutilate
-mutilated
-mutilates
-mutilating
-mutilation
-mutilations
-mutineer
-mutineers
-muting
-mutinied
-mutinies
-mutinous
-mutinously
-mutiny
-mutt
-mutter
-muttered
-mutterer
-mutterers
-muttering
-mutterings
-mutters
-mutton
-muttons
-mutts
-mutual
-mutuality
-mutually
-muzak
-muzzle
-muzzled
-muzzles
-muzzling
-my
-myalgic
-myelin
-myna
-mynahs
-myocardial
-myope
-myopia
-myopic
-myopically
-myriad
-myriads
-myrrh
-myself
-mysteries
-mysterious
-mysteriously
-mystery
-mystic
-mystical
-mystically
-mysticism
-mystics
-mystification
-mystified
-mystifies
-mystify
-mystifying
-mystique
-myth
-mythic
-mythical
-mythological
-mythologies
-mythologised
-mythology
-myths
-myxomatosis
-nab
-nabbed
-nabs
-nadir
-nag
-nagasaki
-nagged
-nagger
-nagging
-nags
-naiad
-naiads
-nail
-nailbiting
-nailed
-nailing
-nails
-nairobi
-naive
-naively
-naivete
-naivety
-naked
-nakedly
-nakedness
-name
-nameable
-namecalling
-named
-namedropping
-nameless
-namely
-nameplate
-nameplates
-names
-namesake
-namesakes
-namibia
-namibian
-naming
-namings
-nannies
-nanny
-nanometre
-nanometres
-nanosecond
-nanoseconds
-nanotechnology
-naomi
-nap
-napalm
-nape
-naphtha
-napkin
-napkins
-naples
-napoleon
-napped
-nappies
-napping
-nappy
-naps
-narcissism
-narcissistic
-narcoleptic
-narcosis
-narcotic
-narcotics
-narrate
-narrated
-narrates
-narrating
-narration
-narrations
-narrative
-narratives
-narratology
-narrator
-narrators
-narrow
-narrowed
-narrower
-narrowest
-narrowing
-narrowly
-narrowminded
-narrowmindedness
-narrowness
-narrows
-narwhal
-nasal
-nasalised
-nasally
-nascent
-nastier
-nastiest
-nastily
-nastiness
-nasturtium
-nasturtiums
-nasty
-natal
-nation
-national
-nationalisation
-nationalisations
-nationalise
-nationalised
-nationalising
-nationalism
-nationalist
-nationalistic
-nationalists
-nationalities
-nationality
-nationally
-nationals
-nationhood
-nations
-nationwide
-native
-natives
-nativity
-nato
-nattering
-natural
-naturalisation
-naturalise
-naturalised
-naturalism
-naturalist
-naturalistic
-naturalists
-naturally
-naturalness
-nature
-natures
-naturist
-naturists
-naught
-naughtiest
-naughtily
-naughtiness
-naughts
-naughty
-nausea
-nauseate
-nauseated
-nauseates
-nauseating
-nauseatingly
-nauseous
-nauseousness
-nautical
-nautili
-nautilus
-naval
-nave
-navel
-navels
-navies
-navigable
-navigate
-navigated
-navigating
-navigation
-navigational
-navigator
-navigators
-navvies
-navvy
-navy
-nay
-nazi
-naziism
-nazis
-nazism
-ndebele
-ne
-near
-nearby
-neared
-nearer
-nearest
-nearing
-nearly
-nearness
-nears
-nearside
-nearsighted
-neat
-neaten
-neatening
-neatens
-neater
-neatest
-neatly
-neatness
-nebula
-nebulae
-nebular
-nebulas
-nebulosity
-nebulous
-nebulously
-nebulousness
-necessaries
-necessarily
-necessary
-necessitate
-necessitated
-necessitates
-necessitating
-necessities
-necessity
-neck
-neckband
-necked
-necking
-necklace
-necklaces
-neckline
-necklines
-necks
-necktie
-necromancer
-necromancers
-necromancy
-necromantic
-necrophilia
-necrophiliac
-necrophiliacs
-necropolis
-necropsy
-necrosis
-necrotic
-nectar
-nectarines
-nectars
-nee
-need
-needed
-needful
-needier
-neediest
-neediness
-needing
-needle
-needlecraft
-needled
-needles
-needless
-needlessly
-needlework
-needling
-needs
-needy
-negate
-negated
-negates
-negating
-negation
-negations
-negative
-negatively
-negativeness
-negatives
-negativism
-negativity
-negev
-neglect
-neglected
-neglectful
-neglecting
-neglects
-negligee
-negligees
-negligence
-negligent
-negligently
-negligibility
-negligible
-negligibly
-negotiable
-negotiate
-negotiated
-negotiates
-negotiating
-negotiation
-negotiations
-negotiator
-negotiators
-negroid
-neigh
-neighbour
-neighbourhood
-neighbourhoods
-neighbouring
-neighbourliness
-neighbourly
-neighbours
-neighed
-neighing
-neither
-nematode
-nematodes
-nemesis
-neolithic
-neologism
-neologisms
-neon
-neonatal
-neonate
-neonates
-neophyte
-neophytes
-neoplasm
-neoplasms
-neoprene
-nepal
-nephew
-nephews
-nephritis
-nepotism
-neptune
-neptunium
-nerd
-nerds
-nerve
-nerveless
-nervelessness
-nerves
-nervous
-nervously
-nervousness
-nervy
-nest
-nestable
-nested
-nestegg
-nesting
-nestle
-nestled
-nestles
-nestling
-nests
-net
-netball
-nether
-nethermost
-nets
-nett
-netted
-netting
-nettle
-nettled
-nettles
-netts
-network
-networked
-networking
-networks
-neural
-neuralgia
-neurobiology
-neurological
-neurologically
-neurologist
-neurologists
-neurology
-neuron
-neuronal
-neurone
-neurones
-neurons
-neurophysiology
-neuroscience
-neuroscientists
-neuroses
-neurosis
-neurosurgeon
-neurosurgeons
-neurosurgery
-neurotic
-neurotically
-neurotics
-neurotransmitter
-neurotransmitters
-neuter
-neutered
-neutering
-neuters
-neutral
-neutralisation
-neutralise
-neutralised
-neutraliser
-neutralises
-neutralising
-neutralism
-neutralist
-neutrality
-neutrally
-neutrals
-neutrino
-neutron
-neutrons
-never
-neverending
-nevertheless
-new
-newborn
-newcomer
-newcomers
-newer
-newest
-newfangled
-newfound
-newish
-newlook
-newly
-newlywed
-newlyweds
-newness
-news
-newsagent
-newsagents
-newsboy
-newscast
-newscasters
-newsflash
-newsflashes
-newsletter
-newsletters
-newsman
-newsmen
-newspaper
-newspapermen
-newspapers
-newsprint
-newsreader
-newsreaders
-newsreel
-newsreels
-newsroom
-newsstand
-newsstands
-newsworthy
-newsy
-newt
-newton
-newts
-next
-ngoing
-nguni
-ngunis
-niagara
-nib
-nibble
-nibbled
-nibbler
-nibblers
-nibbles
-nibbling
-nibs
-nice
-nicely
-niceness
-nicer
-nicest
-niceties
-nicety
-niche
-niches
-nick
-nicked
-nickel
-nicking
-nickname
-nicknamed
-nicknames
-nicks
-nicotine
-niece
-nieces
-niftily
-nifty
-niger
-nigeria
-niggardly
-niggle
-niggled
-niggles
-niggling
-nigh
-night
-nightcap
-nightcaps
-nightclothes
-nightclub
-nightclubs
-nightdress
-nightdresses
-nightfall
-nightgown
-nightie
-nighties
-nightingale
-nightingales
-nightlife
-nightly
-nightmare
-nightmares
-nightmarish
-nights
-nightwatchman
-nightwear
-nihilism
-nihilist
-nihilistic
-nil
-nile
-nils
-nimble
-nimbleness
-nimbly
-nimbus
-nincompoop
-nine
-ninefold
-nines
-nineteen
-nineteenth
-nineties
-ninetieth
-ninety
-nineveh
-ninny
-ninth
-ninths
-nip
-nipped
-nipper
-nipping
-nipple
-nipples
-nippon
-nips
-nirvana
-nit
-nitpicking
-nitrate
-nitrates
-nitric
-nitrogen
-nitrogenous
-nitroglycerine
-nitrous
-nits
-nitwit
-nixon
-no
-noah
-nobility
-noble
-nobleman
-noblemen
-nobleness
-nobler
-nobles
-noblest
-nobly
-nobodies
-nobody
-noctuids
-nocturnal
-nocturnally
-nocturne
-nocturnes
-nod
-nodal
-nodded
-nodding
-noddle
-noddy
-node
-nodes
-nods
-nodular
-nodule
-noduled
-nodules
-noel
-noggin
-nogging
-nohow
-noise
-noiseless
-noiselessly
-noises
-noisier
-noisiest
-noisily
-noisiness
-noisome
-noisy
-nomad
-nomadic
-nomads
-nomenclature
-nomenclatures
-nominal
-nominally
-nominate
-nominated
-nominates
-nominating
-nomination
-nominations
-nominative
-nominator
-nominee
-nominees
-non
-nonbeliever
-nonbelievers
-nonchalance
-nonchalant
-nonchalantly
-nonconformist
-nonconformists
-nonconformity
-nondrinkers
-none
-nonentities
-nonentity
-nonessential
-nonessentials
-nonetheless
-nonevent
-nonexistence
-nonexistent
-nonfunctional
-noninterference
-nonintervention
-nonparticipation
-nonpayment
-nonplussed
-nonsense
-nonsenses
-nonsensical
-nonsmoker
-nonsmokers
-nonsmoking
-nonviolence
-nonviolent
-noodle
-noodles
-nook
-nooks
-noon
-noonday
-noons
-noontide
-noose
-noosed
-nooses
-nor
-noradrenalin
-noradrenaline
-nordic
-norm
-normal
-normalcy
-normalisable
-normalisation
-normalisations
-normalise
-normalised
-normaliser
-normalisers
-normalises
-normalising
-normality
-normally
-normals
-norman
-normandy
-normans
-normative
-normed
-norms
-norsemen
-north
-northbound
-northerly
-northern
-northerner
-northerners
-northernmost
-northmen
-northward
-northwards
-norway
-nose
-nosed
-nosedive
-noses
-nosey
-nosier
-nosiest
-nosily
-nosiness
-nosing
-nostalgia
-nostalgic
-nostalgically
-nostril
-nostrils
-nostrum
-nosy
-not
-notable
-notables
-notably
-notaries
-notary
-notation
-notational
-notationally
-notations
-notch
-notched
-notches
-notching
-note
-notebook
-notebooks
-noted
-notepad
-notepads
-notepaper
-notes
-noteworthy
-nothing
-nothingness
-nothings
-notice
-noticeable
-noticeably
-noticeboard
-noticeboards
-noticed
-notices
-noticing
-notifiable
-notification
-notifications
-notified
-notifies
-notify
-notifying
-noting
-notion
-notional
-notionally
-notions
-notoriety
-notorious
-notoriously
-notwithstanding
-nougat
-nougats
-nought
-noughts
-noun
-nounal
-nouns
-nourish
-nourished
-nourishes
-nourishing
-nourishment
-novel
-novelette
-novelist
-novelistic
-novelists
-novelle
-novels
-novelties
-novelty
-november
-novice
-novices
-now
-nowadays
-nowhere
-noxious
-noxiously
-noxiousness
-nozzle
-nozzles
-nu
-nuance
-nuances
-nuclear
-nuclei
-nucleic
-nucleus
-nude
-nudeness
-nudes
-nudge
-nudged
-nudges
-nudging
-nudism
-nudist
-nudists
-nudities
-nudity
-nugget
-nuggets
-nuisance
-nuisances
-nuke
-null
-nullification
-nullified
-nullifies
-nullify
-nullifying
-nullity
-nulls
-numb
-numbed
-number
-numbered
-numbering
-numberings
-numberless
-numberplate
-numbers
-numbing
-numbingly
-numbly
-numbness
-numbs
-numbskull
-numeracy
-numeral
-numerals
-numerate
-numerator
-numerators
-numeric
-numerical
-numerically
-numerological
-numerologist
-numerologists
-numerology
-numerous
-numismatic
-numismatics
-numskull
-nun
-nunneries
-nunnery
-nuns
-nuptial
-nuptials
-nurse
-nursed
-nursemaid
-nursemaids
-nurseries
-nursery
-nurseryman
-nurserymen
-nurses
-nursing
-nurture
-nurtured
-nurtures
-nurturing
-nut
-nutation
-nutcracker
-nutcrackers
-nutmeg
-nutmegs
-nutrient
-nutrients
-nutriment
-nutrition
-nutritional
-nutritionally
-nutritionist
-nutritionists
-nutritious
-nutritive
-nuts
-nutshell
-nuttier
-nutty
-nuzzle
-nuzzled
-nuzzles
-nuzzling
-nyala
-nylon
-nylons
-nymph
-nympholepsy
-nymphomania
-nymphomaniac
-nymphs
-oaf
-oafish
-oafs
-oak
-oaken
-oaks
-oakum
-oar
-oars
-oarsman
-oarsmen
-oases
-oasis
-oast
-oat
-oatcakes
-oath
-oaths
-oatmeal
-oats
-obduracy
-obdurate
-obdurately
-obedience
-obedient
-obediently
-obeisance
-obelisk
-obelisks
-obese
-obesity
-obey
-obeyed
-obeying
-obeys
-obfuscate
-obfuscated
-obfuscates
-obfuscation
-obfuscatory
-obituaries
-obituary
-object
-objected
-objectified
-objecting
-objection
-objectionable
-objectionableness
-objectionably
-objections
-objective
-objectively
-objectives
-objectivity
-objectless
-objector
-objectors
-objects
-oblate
-obligate
-obligated
-obligation
-obligations
-obligatorily
-obligatory
-oblige
-obliged
-obliges
-obliging
-obligingly
-oblique
-obliqued
-obliquely
-obliqueness
-obliquity
-obliterate
-obliterated
-obliterates
-obliterating
-obliteration
-oblivion
-oblivious
-obliviousness
-oblong
-oblongs
-obloquy
-obnoxious
-obnoxiously
-obnoxiousness
-oboe
-oboes
-oboist
-obscene
-obscenely
-obscenities
-obscenity
-obscurantism
-obscurantist
-obscuration
-obscure
-obscured
-obscurely
-obscureness
-obscurer
-obscures
-obscurest
-obscuring
-obscurities
-obscurity
-obsequious
-obsequiously
-obsequiousness
-observability
-observable
-observables
-observably
-observance
-observances
-observant
-observation
-observational
-observationally
-observations
-observatories
-observatory
-observe
-observed
-observer
-observers
-observes
-observing
-obsess
-obsessed
-obsesses
-obsessing
-obsession
-obsessional
-obsessions
-obsessive
-obsessively
-obsessiveness
-obsidian
-obsolescence
-obsolescent
-obsolete
-obstacle
-obstacles
-obstetric
-obstetrician
-obstetricians
-obstetrics
-obstinacy
-obstinate
-obstinately
-obstreperous
-obstruct
-obstructed
-obstructing
-obstruction
-obstructionism
-obstructions
-obstructive
-obstructively
-obstructiveness
-obstructs
-obtain
-obtainable
-obtained
-obtaining
-obtains
-obtrude
-obtruded
-obtruding
-obtrusive
-obtrusiveness
-obtuse
-obtusely
-obtuseness
-obverse
-obviate
-obviated
-obviates
-obviating
-obvious
-obviously
-obviousness
-occasion
-occasional
-occasionally
-occasioned
-occasioning
-occasions
-occident
-occidental
-occipital
-occluded
-occludes
-occlusion
-occult
-occultism
-occults
-occupancies
-occupancy
-occupant
-occupants
-occupation
-occupational
-occupationally
-occupations
-occupied
-occupier
-occupiers
-occupies
-occupy
-occupying
-occur
-occurred
-occurrence
-occurrences
-occurring
-occurs
-ocean
-oceanic
-oceanographer
-oceanographers
-oceanographic
-oceanography
-oceans
-ocelot
-ocelots
-ochre
-ochres
-octagon
-octagonal
-octagons
-octahedral
-octahedron
-octal
-octane
-octanes
-octant
-octave
-octaves
-octavo
-octet
-octets
-october
-octogenarian
-octogenarians
-octopus
-octopuses
-ocular
-oculist
-odd
-odder
-oddest
-oddities
-oddity
-oddjob
-oddly
-oddment
-oddments
-oddness
-odds
-ode
-odes
-odin
-odious
-odiously
-odiousness
-odium
-odiums
-odometer
-odoriferous
-odorous
-odour
-odourless
-odours
-odyssey
-oedema
-oedipus
-oesophagus
-oestrogen
-oestrogens
-oestrus
-oeuvre
-oeuvres
-of
-off
-offal
-offbeat
-offcut
-offcuts
-offence
-offences
-offend
-offended
-offender
-offenders
-offending
-offends
-offensive
-offensively
-offensiveness
-offensives
-offer
-offered
-offering
-offerings
-offers
-offertory
-offhand
-office
-officer
-officers
-officership
-officerships
-offices
-official
-officialdom
-officially
-officialness
-officials
-officiate
-officiated
-officiating
-officious
-officiously
-officiousness
-offprint
-offset
-offshoot
-offshore
-oft
-often
-ogle
-ogled
-ogling
-ogre
-ogres
-ogrish
-oh
-ohio
-ohm
-ohmic
-ohms
-oil
-oilcloth
-oiled
-oiler
-oilers
-oilfield
-oilfields
-oilier
-oiliest
-oiliness
-oiling
-oilman
-oilmen
-oilrig
-oils
-oily
-oink
-oinked
-oinks
-ointment
-ointments
-ok
-okapi
-okapis
-okay
-okayed
-okays
-oklahoma
-old
-oldage
-olden
-older
-oldest
-oldfashioned
-oldie
-oldish
-oldmaids
-oldtimer
-oldtimers
-ole
-oleander
-oleanders
-olfactory
-olive
-oliveoil
-oliver
-olives
-olm
-olms
-olympia
-olympiad
-olympian
-olympic
-olympics
-olympus
-ombudsman
-ombudsmen
-omega
-omelette
-omelettes
-omen
-omens
-ominous
-ominously
-omission
-omissions
-omit
-omits
-omitted
-omitting
-omnibus
-omnibuses
-omnidirectional
-omnipotence
-omnipotent
-omnipresence
-omnipresent
-omniscience
-omniscient
-omnivore
-omnivores
-omnivorous
-on
-onager
-onagers
-once
-one
-oneness
-oner
-onerous
-ones
-oneself
-onesided
-onesidedly
-onesidedness
-ongoing
-onion
-onions
-onlooker
-onlookers
-onlooking
-only
-onlybegotten
-onset
-onshore
-onslaught
-onslaughts
-ontario
-onto
-ontogeny
-ontological
-ontologically
-ontology
-onus
-onuses
-onward
-onwards
-onyx
-onyxes
-oocytes
-oodles
-ooh
-oolitic
-oology
-oompah
-oops
-ooze
-oozed
-oozes
-oozing
-oozy
-opacity
-opal
-opalescent
-opals
-opaque
-open
-opened
-opener
-openers
-openhanded
-openhandedness
-openheart
-openhearted
-opening
-openings
-openly
-openminded
-openmindedness
-openness
-opens
-opera
-operable
-operand
-operands
-operas
-operate
-operated
-operates
-operatic
-operating
-operation
-operational
-operationally
-operations
-operative
-operatives
-operator
-operators
-operculum
-operetta
-operettas
-ophthalmic
-ophthalmics
-ophthalmologist
-ophthalmologists
-ophthalmology
-opiate
-opiates
-opine
-opined
-opines
-opining
-opinion
-opinionated
-opinions
-opioid
-opioids
-opium
-opossum
-opponent
-opponents
-opportune
-opportunely
-opportunism
-opportunist
-opportunistic
-opportunistically
-opportunists
-opportunities
-opportunity
-oppose
-opposed
-opposes
-opposing
-opposite
-oppositely
-opposites
-opposition
-oppositional
-oppositions
-oppress
-oppressed
-oppresses
-oppressing
-oppression
-oppressions
-oppressive
-oppressively
-oppressiveness
-oppressor
-oppressors
-opprobrious
-opprobrium
-opt
-opted
-optic
-optical
-optically
-optician
-opticians
-optics
-optima
-optimal
-optimality
-optimally
-optimisation
-optimisations
-optimise
-optimised
-optimiser
-optimisers
-optimises
-optimising
-optimism
-optimist
-optimistic
-optimistically
-optimists
-optimum
-opting
-option
-optional
-optionality
-optionally
-options
-optoelectronic
-opts
-opulence
-opulent
-opus
-opuses
-or
-oracle
-oracles
-oracular
-oral
-orally
-orang
-orange
-oranges
-orangs
-orangutan
-orangutans
-orate
-orated
-orates
-orating
-oration
-orations
-orator
-oratorical
-oratorio
-orators
-oratory
-orb
-orbit
-orbital
-orbitals
-orbited
-orbiter
-orbiting
-orbits
-orbs
-orca
-orchard
-orchards
-orchestra
-orchestral
-orchestras
-orchestrate
-orchestrated
-orchestrates
-orchestrating
-orchestration
-orchestrations
-orchestrator
-orchid
-orchids
-ordain
-ordained
-ordaining
-ordains
-ordeal
-ordeals
-order
-ordered
-ordering
-orderings
-orderless
-orderlies
-orderliness
-orderly
-orders
-ordinal
-ordinals
-ordinance
-ordinances
-ordinands
-ordinarily
-ordinariness
-ordinary
-ordinate
-ordinates
-ordination
-ordinations
-ordnance
-ordure
-ore
-ores
-organ
-organelles
-organic
-organically
-organics
-organisable
-organisation
-organisational
-organisationally
-organisations
-organise
-organised
-organiser
-organisers
-organises
-organising
-organism
-organisms
-organist
-organists
-organs
-organza
-orgies
-orgy
-orient
-orientable
-oriental
-orientalism
-orientals
-orientate
-orientated
-orientates
-orientation
-orientations
-oriented
-orienteering
-orienting
-orifice
-orifices
-origami
-origin
-original
-originality
-originally
-originals
-originate
-originated
-originates
-originating
-origination
-originator
-originators
-origins
-orimulsion
-ornament
-ornamental
-ornamentation
-ornamented
-ornamenting
-ornaments
-ornate
-ornately
-ornithological
-ornithologist
-ornithologists
-ornithology
-orphan
-orphanage
-orphanages
-orphaned
-orphans
-orpheus
-orthodontist
-orthodox
-orthodoxies
-orthodoxy
-orthogonal
-orthogonality
-orthogonally
-orthographic
-orthographical
-orthographically
-orthography
-orthonormal
-orthopaedic
-orthopaedics
-orthorhombic
-oryxes
-oscar
-oscars
-oscillate
-oscillated
-oscillates
-oscillating
-oscillation
-oscillations
-oscillator
-oscillators
-oscillatory
-oscilloscope
-oscilloscopes
-osiris
-oslo
-osmium
-osmosis
-osmotic
-osprey
-ospreys
-ossification
-ossified
-ostensible
-ostensibly
-ostentation
-ostentatious
-ostentatiously
-osteoarthritis
-osteopath
-osteopaths
-osteopathy
-osteoporosis
-ostler
-ostlers
-ostracise
-ostracised
-ostracism
-ostrich
-ostriches
-other
-otherness
-others
-otherwise
-otter
-otters
-ottoman
-ouch
-ought
-ounce
-ounces
-our
-ours
-ourselves
-oust
-ousted
-ouster
-ousting
-ousts
-out
-outage
-outages
-outback
-outbid
-outbids
-outboard
-outbound
-outbreak
-outbreaks
-outbred
-outbuilding
-outbuildings
-outburst
-outbursts
-outcall
-outcast
-outcasts
-outclassed
-outcome
-outcomes
-outcries
-outcrop
-outcrops
-outcry
-outdated
-outdid
-outdo
-outdoes
-outdoing
-outdone
-outdoor
-outdoors
-outer
-outermost
-outface
-outfall
-outfalls
-outfield
-outfit
-outfits
-outfitters
-outflank
-outflanked
-outflow
-outflows
-outfox
-outfoxed
-outfoxes
-outgo
-outgoing
-outgoings
-outgrew
-outgrow
-outgrowing
-outgrown
-outgrowth
-outgrowths
-outguess
-outhouse
-outhouses
-outing
-outings
-outlandish
-outlast
-outlasted
-outlasts
-outlaw
-outlawed
-outlawing
-outlawry
-outlaws
-outlay
-outlays
-outlet
-outlets
-outlier
-outliers
-outline
-outlined
-outlines
-outlining
-outlive
-outlived
-outlives
-outliving
-outlook
-outlooks
-outlying
-outmanoeuvre
-outmanoeuvred
-outmoded
-outmost
-outnumber
-outnumbered
-outnumbering
-outnumbers
-outpace
-outpaced
-outpacing
-outpatient
-outpatients
-outperform
-outperformed
-outperforming
-outperforms
-outplacement
-outplay
-outplayed
-outpointed
-outpointing
-outpost
-outposts
-outpouring
-outpourings
-output
-outputs
-outputting
-outrage
-outraged
-outrageous
-outrageously
-outrages
-outraging
-outran
-outrank
-outreach
-outride
-outrider
-outriders
-outrigger
-outright
-outrun
-outruns
-outs
-outsell
-outset
-outsets
-outshine
-outshines
-outshining
-outshone
-outside
-outsider
-outsiders
-outsides
-outsize
-outskirts
-outsmart
-outsold
-outsourcing
-outspan
-outspoken
-outspokenly
-outspokenness
-outspread
-outstanding
-outstandingly
-outstation
-outstations
-outstay
-outstayed
-outstep
-outstretched
-outstrip
-outstripped
-outstripping
-outstrips
-outvoted
-outward
-outwardly
-outwards
-outweigh
-outweighed
-outweighing
-outweighs
-outwit
-outwith
-outwits
-outwitted
-outwitting
-outwork
-outworking
-ova
-oval
-ovals
-ovarian
-ovaries
-ovary
-ovate
-ovation
-ovations
-oven
-ovens
-over
-overact
-overacted
-overacting
-overactive
-overacts
-overall
-overallocation
-overalls
-overambitious
-overanxious
-overate
-overbearing
-overboard
-overburdened
-overcame
-overcapacity
-overcast
-overcharge
-overcharged
-overcharging
-overcoat
-overcoats
-overcome
-overcomes
-overcoming
-overcommitment
-overcommitments
-overcompensate
-overcomplexity
-overcomplicated
-overconfident
-overcook
-overcooked
-overcrowd
-overcrowded
-overcrowding
-overdetermined
-overdid
-overdo
-overdoes
-overdoing
-overdone
-overdose
-overdosed
-overdoses
-overdosing
-overdraft
-overdrafts
-overdramatic
-overdraw
-overdrawn
-overdressed
-overdrive
-overdubbing
-overdue
-overeat
-overeating
-overeats
-overemotional
-overemphasis
-overemphasise
-overemphasised
-overenthusiastic
-overestimate
-overestimated
-overestimates
-overestimating
-overestimation
-overexposed
-overexposure
-overextended
-overfamiliarity
-overfed
-overfeed
-overfeeding
-overfill
-overfishing
-overflow
-overflowed
-overflowing
-overflown
-overflows
-overfly
-overflying
-overfull
-overgeneralised
-overgeneralising
-overgrazing
-overground
-overgrown
-overgrowth
-overhand
-overhang
-overhanging
-overhangs
-overhasty
-overhaul
-overhauled
-overhauling
-overhauls
-overhead
-overheads
-overhear
-overheard
-overhearing
-overhears
-overheat
-overheated
-overheating
-overhung
-overincredulous
-overindulgence
-overindulgent
-overinflated
-overjoyed
-overkill
-overladen
-overlaid
-overlain
-overland
-overlap
-overlapped
-overlapping
-overlaps
-overlay
-overlaying
-overlays
-overleaf
-overlie
-overlies
-overload
-overloaded
-overloading
-overloads
-overlong
-overlook
-overlooked
-overlooking
-overlooks
-overlord
-overlords
-overly
-overlying
-overmanning
-overmantel
-overmatching
-overmuch
-overnight
-overoptimistic
-overpaid
-overpass
-overpay
-overpayment
-overplay
-overplayed
-overplaying
-overpopulated
-overpopulation
-overpopulous
-overpower
-overpowered
-overpowering
-overpoweringly
-overpowers
-overpressure
-overpriced
-overprint
-overprinted
-overprinting
-overprints
-overproduced
-overproduction
-overqualified
-overran
-overrate
-overrated
-overreach
-overreached
-overreaching
-overreact
-overreacted
-overreacting
-overreaction
-overreacts
-overrepresented
-overridden
-override
-overrides
-overriding
-overripe
-overrode
-overrule
-overruled
-overruling
-overrun
-overrunning
-overruns
-overs
-oversampled
-oversampling
-oversaw
-overseas
-oversee
-overseeing
-overseen
-overseer
-overseers
-oversees
-oversensitive
-oversensitivity
-oversexed
-overshadow
-overshadowed
-overshadowing
-overshadows
-overshoot
-overshooting
-overshoots
-overshot
-oversight
-oversights
-oversimplification
-oversimplifications
-oversimplified
-oversimplifies
-oversimplify
-oversimplifying
-oversize
-oversized
-oversleep
-overslept
-overspend
-overspending
-overspent
-overspill
-overstaffed
-overstate
-overstated
-overstatement
-overstates
-overstating
-overstep
-overstepped
-overstepping
-oversteps
-overstocked
-overstocking
-overstress
-overstressed
-overstretch
-overstretched
-overstrung
-overstuffed
-oversubscribed
-oversupply
-overt
-overtake
-overtaken
-overtaker
-overtakers
-overtakes
-overtaking
-overtax
-overthetop
-overthrew
-overthrow
-overthrowing
-overthrown
-overthrows
-overtightened
-overtime
-overtly
-overtness
-overtone
-overtones
-overtook
-overtops
-overture
-overtures
-overturn
-overturned
-overturning
-overturns
-overuse
-overused
-overuses
-overvalue
-overvalued
-overview
-overviews
-overweening
-overweight
-overwhelm
-overwhelmed
-overwhelming
-overwhelmingly
-overwhelms
-overwinter
-overwintered
-overwintering
-overwork
-overworked
-overworking
-overwrite
-overwrites
-overwriting
-overwritten
-overwrote
-overwrought
-oviduct
-ovoid
-ovular
-ovulation
-ovum
-ow
-owe
-owed
-owes
-owing
-owl
-owlet
-owlets
-owlish
-owlishly
-owls
-own
-owned
-owner
-owners
-ownership
-ownerships
-owning
-owns
-ox
-oxalate
-oxalic
-oxcart
-oxen
-oxford
-oxidant
-oxidants
-oxidation
-oxide
-oxides
-oxidisation
-oxidise
-oxidised
-oxidiser
-oxidising
-oxtail
-oxtails
-oxygen
-oxygenated
-oxygenating
-oxygenation
-oxymoron
-oyster
-oysters
-ozone
-ozonefriendly
-pa
-pace
-paced
-pacemaker
-pacemakers
-paceman
-pacemen
-pacer
-pacers
-paces
-pacey
-pachyderm
-pacific
-pacification
-pacified
-pacifier
-pacifies
-pacifism
-pacifist
-pacifists
-pacify
-pacifying
-pacing
-pack
-packable
-package
-packaged
-packages
-packaging
-packed
-packer
-packers
-packet
-packets
-packhorse
-packing
-packings
-packs
-pact
-pacts
-pad
-padded
-padding
-paddings
-paddle
-paddled
-paddler
-paddlers
-paddles
-paddling
-paddock
-paddocks
-paddy
-padlock
-padlocked
-padlocking
-padlocks
-padre
-padres
-pads
-paean
-paeans
-paediatric
-paediatrician
-paediatricians
-paediatrics
-paedophile
-paedophiles
-paedophilia
-paella
-paeony
-pagan
-paganism
-pagans
-page
-pageant
-pageantry
-pageants
-pageboy
-paged
-pageful
-pager
-pagers
-pages
-paginal
-paginate
-paginated
-paginating
-pagination
-paging
-pagoda
-pagodas
-paid
-paidup
-pail
-pails
-pain
-pained
-painful
-painfully
-painfulness
-paining
-painkiller
-painkillers
-painless
-painlessly
-pains
-painstaking
-painstakingly
-paint
-paintbox
-paintbrush
-painted
-painter
-painters
-painting
-paintings
-paints
-paintwork
-pair
-paired
-pairing
-pairings
-pairs
-pairwise
-pajama
-pajamas
-pakistan
-pal
-palace
-palaces
-palaeographic
-palaeolithic
-palaeontological
-palaeontologist
-palaeontologists
-palaeontology
-palatability
-palatable
-palatal
-palate
-palates
-palatial
-palatinate
-palatine
-palaver
-pale
-paled
-paleface
-palely
-paleness
-paler
-pales
-palest
-palette
-palettes
-palimpsest
-palindrome
-palindromes
-palindromic
-paling
-palisade
-palisades
-pall
-palladium
-pallbearers
-palled
-pallet
-pallets
-palliative
-palliatives
-pallid
-pallmall
-pallor
-palls
-palm
-palmed
-palming
-palmist
-palmistry
-palms
-palmtop
-palmtops
-palmy
-palp
-palpable
-palpably
-palpate
-palpated
-palpates
-palpitate
-palpitated
-palpitating
-palpitation
-palpitations
-pals
-palsied
-palsy
-paltrier
-paltriest
-paltriness
-paltry
-paludal
-pampas
-pamper
-pampered
-pampering
-pampers
-pamphlet
-pamphleteer
-pamphleteers
-pamphlets
-pan
-panacea
-panaceas
-panache
-panama
-pancake
-pancaked
-pancakes
-pancreas
-pancreatic
-panda
-pandas
-pandemic
-pandemics
-pandemonium
-pander
-pandering
-panders
-pandora
-pane
-paned
-panel
-panelled
-panelling
-panellist
-panellists
-panels
-panes
-pang
-panga
-pangas
-pangolin
-pangs
-panic
-panicked
-panicking
-panicky
-panics
-panicstricken
-panjandrum
-panned
-pannier
-panniers
-panning
-panoply
-panorama
-panoramas
-panoramic
-pans
-pansies
-pansy
-pant
-pantaloons
-pantechnicon
-panted
-pantheism
-pantheist
-pantheistic
-pantheon
-panther
-panthers
-panties
-pantile
-pantiled
-pantiles
-panting
-pantograph
-pantographs
-pantomime
-pantomimes
-pantries
-pantry
-pants
-panzer
-pap
-papa
-papacy
-papal
-paparazzi
-papas
-papaw
-papaws
-papaya
-paper
-paperback
-paperbacks
-papered
-papering
-paperless
-papers
-paperthin
-paperweight
-paperweights
-paperwork
-papery
-papilla
-papist
-pappy
-paprika
-papua
-papule
-papyri
-papyrus
-par
-parable
-parables
-parabola
-parabolas
-parabolic
-paraboloid
-paraboloids
-paracetamol
-parachute
-parachuted
-parachutes
-parachuting
-parachutist
-parachutists
-parade
-paraded
-parader
-parades
-paradigm
-paradigmatic
-paradigms
-parading
-paradise
-paradises
-paradox
-paradoxes
-paradoxical
-paradoxically
-paraffin
-paragliding
-paragon
-paragons
-paragraph
-paragraphing
-paragraphs
-paraguay
-parakeet
-parakeets
-paralinguistic
-parallax
-parallaxes
-parallel
-paralleled
-parallelepiped
-paralleling
-parallelism
-parallelogram
-parallelograms
-parallels
-paralyse
-paralysed
-paralyses
-paralysing
-paralysis
-paralytic
-paralytically
-paramagnetic
-paramagnetism
-paramedic
-paramedical
-paramedics
-parameter
-parameters
-parametric
-parametrically
-parametrisation
-parametrise
-parametrised
-parametrises
-paramilitaries
-paramilitary
-paramount
-paramountcy
-paramour
-paranoia
-paranoiac
-paranoiacs
-paranoid
-paranormal
-parapet
-parapets
-paraphernalia
-paraphrase
-paraphrased
-paraphrases
-paraphrasing
-paraplegic
-parapsychologist
-parapsychology
-paraquat
-parasite
-parasites
-parasitic
-parasitical
-parasitised
-parasitism
-parasitologist
-parasitology
-parasol
-parasols
-paratroop
-paratrooper
-paratroopers
-paratroops
-parboil
-parcel
-parcelled
-parcelling
-parcels
-parch
-parched
-parches
-parchment
-parchments
-pardon
-pardonable
-pardoned
-pardoning
-pardons
-pare
-pared
-parent
-parentage
-parental
-parented
-parenteral
-parentheses
-parenthesis
-parenthesise
-parenthesised
-parenthetic
-parenthetical
-parenthetically
-parenthood
-parenting
-parentinlaw
-parents
-parentsinlaw
-pares
-parfait
-parfaits
-pariah
-pariahs
-parietal
-paring
-paris
-parish
-parishes
-parishioner
-parishioners
-parisian
-parities
-parity
-park
-parka
-parkas
-parked
-parking
-parkland
-parks
-parlance
-parley
-parleying
-parliament
-parliamentarian
-parliamentarians
-parliamentary
-parliaments
-parlour
-parlourmaid
-parlours
-parlous
-parochial
-parochialism
-parochiality
-parodied
-parodies
-parodist
-parody
-parodying
-parole
-paroxysm
-paroxysms
-parquet
-parried
-parries
-parrot
-parroting
-parrots
-parry
-parrying
-parse
-parsec
-parsecs
-parsed
-parser
-parsers
-parses
-parsimonious
-parsimony
-parsing
-parsings
-parsley
-parsnip
-parsnips
-parson
-parsonage
-parsons
-part
-partake
-partaken
-partaker
-partakers
-partakes
-partaking
-parted
-parthenogenesis
-partial
-partiality
-partially
-participant
-participants
-participate
-participated
-participates
-participating
-participation
-participative
-participators
-participatory
-participle
-participles
-particle
-particles
-particular
-particularise
-particularised
-particularism
-particularities
-particularity
-particularly
-particulars
-particulate
-particulates
-parties
-parting
-partings
-partisan
-partisans
-partisanship
-partition
-partitioned
-partitioning
-partitions
-partly
-partner
-partnered
-partnering
-partners
-partnership
-partnerships
-partook
-partridge
-partridges
-parts
-parttime
-party
-parvenu
-pascal
-pascals
-paschal
-pass
-passable
-passably
-passage
-passages
-passageway
-passageways
-passant
-passe
-passed
-passenger
-passengers
-passer
-passers
-passersby
-passes
-passim
-passing
-passion
-passionate
-passionately
-passionateness
-passionless
-passions
-passivated
-passive
-passively
-passives
-passivity
-passmark
-passover
-passport
-passports
-password
-passwords
-past
-pasta
-pastas
-paste
-pasteboard
-pasted
-pastel
-pastels
-pastes
-pasteur
-pasteurisation
-pasteurised
-pastiche
-pastiches
-pasties
-pastille
-pastime
-pastimes
-pasting
-pastis
-pastor
-pastoral
-pastoralism
-pastors
-pastrami
-pastries
-pastry
-pasts
-pasture
-pastured
-pastureland
-pastures
-pasturing
-pasty
-pat
-patch
-patchable
-patched
-patches
-patchier
-patchiest
-patchily
-patchiness
-patching
-patchup
-patchwork
-patchy
-pate
-patella
-paten
-patent
-patentable
-patented
-patentee
-patenting
-patently
-patents
-pater
-paternal
-paternalism
-paternalist
-paternalistic
-paternally
-paternity
-pates
-path
-pathetic
-pathetically
-pathfinder
-pathfinders
-pathless
-pathogen
-pathogenesis
-pathogenic
-pathogens
-pathological
-pathologically
-pathologies
-pathologist
-pathologists
-pathology
-pathos
-paths
-pathway
-pathways
-patience
-patient
-patiently
-patients
-patina
-patination
-patio
-patisserie
-patois
-patriarch
-patriarchal
-patriarchies
-patriarchs
-patriarchy
-patrician
-patricians
-patrilineal
-patrimony
-patriot
-patriotic
-patriotism
-patriots
-patrol
-patrolled
-patrolling
-patrols
-patron
-patronage
-patroness
-patronesses
-patronisation
-patronise
-patronised
-patronises
-patronising
-patronisingly
-patrons
-pats
-patted
-patten
-pattens
-patter
-pattered
-pattering
-pattern
-patterned
-patterning
-patternless
-patterns
-patters
-patties
-patting
-paucity
-paul
-paunch
-paunchy
-pauper
-paupers
-pause
-paused
-pauses
-pausing
-pave
-paved
-pavement
-pavements
-paves
-pavilion
-pavilions
-paving
-pavings
-pavlov
-paw
-pawed
-pawing
-pawn
-pawnbroker
-pawnbrokers
-pawned
-pawning
-pawns
-pawnshop
-pawnshops
-pawpaw
-pawpaws
-paws
-pay
-payable
-payback
-payday
-paydays
-payed
-payee
-payees
-payer
-payers
-paying
-payload
-payloads
-paymaster
-paymasters
-payment
-payments
-payphone
-payphones
-payroll
-payrolls
-pays
-payslips
-pea
-peace
-peaceable
-peaceably
-peaceful
-peacefully
-peacefulness
-peacekeepers
-peacekeeping
-peacemaker
-peacemakers
-peacemaking
-peacetime
-peach
-peaches
-peachier
-peachiest
-peachy
-peacock
-peacocks
-peafowl
-peahens
-peak
-peaked
-peakiness
-peaking
-peaks
-peaky
-peal
-pealed
-pealing
-peals
-peanut
-peanuts
-pear
-pearl
-pearls
-pearly
-pears
-peartrees
-peas
-peasant
-peasantry
-peasants
-peat
-peatland
-peatlands
-peaty
-pebble
-pebbled
-pebbles
-pebbly
-pecan
-peccary
-peck
-pecked
-pecker
-peckers
-pecking
-peckish
-pecks
-pectin
-pectoral
-pectorals
-peculiar
-peculiarities
-peculiarity
-peculiarly
-pecuniary
-pedagogic
-pedagogical
-pedagogically
-pedagogue
-pedagogy
-pedal
-pedalled
-pedalling
-pedals
-pedant
-pedantic
-pedantically
-pedantry
-pedants
-peddle
-peddled
-peddler
-peddlers
-peddles
-peddling
-pederasts
-pedestal
-pedestals
-pedestrian
-pedestrianisation
-pedestrianised
-pedestrians
-pedigree
-pedigrees
-pediment
-pedimented
-pediments
-pedlar
-pedlars
-pedology
-peek
-peeked
-peeking
-peeks
-peel
-peeled
-peeler
-peelers
-peeling
-peelings
-peels
-peep
-peeped
-peeper
-peepers
-peephole
-peeping
-peeps
-peer
-peerage
-peerages
-peered
-peering
-peerless
-peers
-peevish
-peevishly
-peevishness
-peg
-pegasus
-pegged
-pegging
-pegs
-pejorative
-pejoratively
-pejoratives
-pekan
-peking
-pele
-pelican
-pelicans
-pellet
-pellets
-pelmet
-pelmets
-pelt
-pelted
-pelting
-pelts
-pelvic
-pelvis
-pelvises
-pen
-penal
-penalisation
-penalise
-penalised
-penalises
-penalising
-penalties
-penalty
-penance
-penances
-pence
-penchant
-pencil
-pencilled
-pencilling
-pencils
-pendant
-pendants
-pending
-pendulous
-pendulum
-pendulums
-penetrable
-penetrate
-penetrated
-penetrates
-penetrating
-penetratingly
-penetration
-penetrations
-penetrative
-penguin
-penguins
-penicillin
-penile
-peninsula
-peninsular
-peninsulas
-penitence
-penitent
-penitential
-penitentiary
-penitently
-penitents
-penknife
-penname
-pennames
-pennant
-pennants
-penned
-pennies
-penniless
-penning
-penny
-pennypinching
-penology
-pens
-pension
-pensionable
-pensioned
-pensioner
-pensioners
-pensioning
-pensions
-pensive
-pensively
-pensiveness
-pent
-pentagon
-pentagonal
-pentagons
-pentagram
-pentagrams
-pentameter
-pentameters
-pentasyllabic
-pentathlete
-pentathlon
-pentatonic
-pentecostal
-penthouse
-penultimate
-penultimately
-penumbra
-penurious
-penury
-peonies
-people
-peopled
-peoples
-pep
-peperoni
-pepper
-peppercorn
-peppercorns
-peppered
-peppering
-peppermint
-peppermints
-peppers
-peppery
-peps
-peptic
-peptide
-peptides
-per
-perambulate
-perambulated
-perambulating
-perambulations
-perambulator
-perannum
-percales
-perceivable
-perceive
-perceived
-perceives
-perceiving
-percent
-percentage
-percentages
-percentile
-percentiles
-percept
-perceptibility
-perceptible
-perceptibly
-perception
-perceptions
-perceptive
-perceptively
-perceptiveness
-percepts
-perceptual
-perceptually
-perch
-perchance
-perched
-percher
-perches
-perching
-perchlorate
-percipient
-percolate
-percolated
-percolates
-percolating
-percolation
-percolator
-percolators
-percuss
-percussed
-percusses
-percussing
-percussion
-percussionist
-percussionists
-percussive
-percussively
-percutaneous
-perdition
-peregrinations
-peregrine
-peregrines
-peremptorily
-peremptoriness
-peremptory
-perennial
-perennially
-perennials
-perestroika
-perfect
-perfected
-perfectibility
-perfecting
-perfection
-perfectionism
-perfectionist
-perfectionists
-perfections
-perfectly
-perfects
-perfidious
-perfidiously
-perfidy
-perforate
-perforated
-perforation
-perforations
-perforce
-perform
-performable
-performance
-performances
-performed
-performer
-performers
-performing
-performs
-perfume
-perfumed
-perfumery
-perfumes
-perfuming
-perfunctorily
-perfunctory
-perfused
-perfusion
-pergola
-pergolas
-perhaps
-peri
-periastron
-perigee
-periglacial
-perihelion
-peril
-perilous
-perilously
-perils
-perimeter
-perimeters
-perinatal
-perineal
-perineum
-period
-periodic
-periodical
-periodically
-periodicals
-periodicity
-periods
-perioperative
-peripatetic
-peripheral
-peripherally
-peripherals
-peripheries
-periphery
-periphrasis
-periphrastic
-periscope
-periscopes
-perish
-perishable
-perishables
-perished
-perishes
-perishing
-peritoneum
-perjure
-perjured
-perjurer
-perjury
-perk
-perked
-perkier
-perkiest
-perkily
-perking
-perks
-perky
-perm
-permafrost
-permanence
-permanency
-permanent
-permanently
-permanganate
-permeability
-permeable
-permeate
-permeated
-permeates
-permeating
-permeation
-permed
-perming
-permissibility
-permissible
-permission
-permissions
-permissive
-permissiveness
-permit
-permits
-permitted
-permitting
-permittivity
-perms
-permutation
-permutations
-permute
-permuted
-permutes
-permuting
-pernicious
-perniciousness
-peroration
-peroxidase
-peroxide
-peroxides
-perpendicular
-perpendicularly
-perpendiculars
-perpetrate
-perpetrated
-perpetrates
-perpetrating
-perpetration
-perpetrator
-perpetrators
-perpetual
-perpetually
-perpetuate
-perpetuated
-perpetuates
-perpetuating
-perpetuation
-perpetuity
-perplex
-perplexed
-perplexedly
-perplexing
-perplexities
-perplexity
-perquisite
-perquisites
-perron
-perry
-persecute
-persecuted
-persecuting
-persecution
-persecutions
-persecutor
-persecutors
-perseverance
-persevere
-persevered
-perseveres
-persevering
-perseveringly
-persia
-persian
-persist
-persisted
-persistence
-persistent
-persistently
-persisting
-persists
-person
-persona
-personable
-personae
-personage
-personages
-personal
-personalisation
-personalise
-personalised
-personalising
-personalities
-personality
-personally
-personification
-personifications
-personified
-personifies
-personify
-personifying
-personnel
-persons
-perspective
-perspectives
-perspex
-perspicacious
-perspicacity
-perspicuity
-perspicuous
-perspicuously
-perspiration
-perspire
-perspiring
-persuade
-persuaded
-persuaders
-persuades
-persuading
-persuasion
-persuasions
-persuasive
-persuasively
-persuasiveness
-pert
-pertain
-pertained
-pertaining
-pertains
-perth
-pertinacious
-pertinaciously
-pertinacity
-pertinence
-pertinent
-pertinently
-pertly
-pertness
-perturb
-perturbation
-perturbations
-perturbed
-perturbing
-peru
-perusal
-peruse
-perused
-peruses
-perusing
-peruvian
-pervade
-pervaded
-pervades
-pervading
-pervasive
-pervasiveness
-perverse
-perversely
-perverseness
-perversion
-perversions
-perversity
-pervert
-perverted
-perverting
-perverts
-peseta
-pesetas
-pesky
-pessimism
-pessimist
-pessimistic
-pessimistically
-pessimists
-pest
-pester
-pestered
-pestering
-pesticide
-pesticides
-pestilence
-pestilent
-pestilential
-pestle
-pests
-pet
-petal
-petals
-petard
-peter
-petered
-petering
-peters
-pethidine
-petit
-petite
-petition
-petitioned
-petitioner
-petitioners
-petitioning
-petitions
-petrel
-petrels
-petrification
-petrified
-petrifies
-petrify
-petrifying
-petrochemical
-petrochemicals
-petrographic
-petrographical
-petrol
-petroleum
-petrological
-petrology
-pets
-petted
-petticoat
-petticoats
-pettier
-pettiest
-pettifoggers
-pettifogging
-pettiness
-petting
-pettish
-pettishly
-pettishness
-petty
-petulance
-petulant
-petulantly
-petunia
-petunias
-pew
-pews
-pewter
-phalanx
-phantasy
-phantom
-phantoms
-pharaoh
-pharmaceutical
-pharmaceuticals
-pharmacies
-pharmacist
-pharmacists
-pharmacological
-pharmacologist
-pharmacologists
-pharmacology
-pharmacy
-pharynx
-phase
-phased
-phases
-phasing
-pheasant
-pheasants
-phenol
-phenols
-phenomena
-phenomenal
-phenomenally
-phenomenological
-phenomenologically
-phenomenologists
-phenomenology
-phenomenon
-phenotype
-phenotypes
-phenylalanine
-pheromone
-pheromones
-phew
-philanthropic
-philanthropist
-philanthropists
-philanthropy
-philatelic
-philatelists
-philately
-philharmonic
-philistine
-philological
-philologist
-philologists
-philology
-philosopher
-philosophers
-philosophic
-philosophical
-philosophically
-philosophies
-philosophise
-philosophising
-philosophy
-phlebotomy
-phlegm
-phlegmatic
-phlegmatically
-phlogiston
-phlox
-phobia
-phobias
-phobic
-phoenix
-phoenixes
-phone
-phoned
-phoneme
-phonemes
-phonemic
-phonemically
-phoner
-phones
-phonetic
-phonetically
-phoneticians
-phoneticist
-phonetics
-phoney
-phoneys
-phoning
-phonograph
-phonographic
-phonological
-phonologically
-phonology
-phonon
-phony
-phooey
-phosphatase
-phosphate
-phosphates
-phosphatic
-phospholipids
-phosphor
-phosphorescence
-phosphorescent
-phosphoric
-phosphorous
-phosphors
-phosphorus
-photo
-photocells
-photochemical
-photochemically
-photochemistry
-photocopied
-photocopier
-photocopiers
-photocopies
-photocopy
-photocopying
-photoelectric
-photoelectrically
-photogenic
-photograph
-photographed
-photographer
-photographers
-photographic
-photographically
-photographing
-photographs
-photography
-photolysis
-photolytic
-photometric
-photometrically
-photometry
-photomultiplier
-photon
-photons
-photoreceptor
-photos
-photosensitive
-photosphere
-photostat
-photosynthesis
-photosynthesising
-photosynthetic
-photosynthetically
-phototypesetter
-phototypesetting
-photovoltaic
-phrasal
-phrase
-phrasebook
-phrased
-phraseology
-phrases
-phrasing
-phrenological
-phrenologically
-phrenologists
-phrenology
-phyla
-phylactery
-phylogenetic
-phylogeny
-phylum
-physic
-physical
-physicality
-physically
-physician
-physicians
-physicist
-physicists
-physics
-physio
-physiognomies
-physiognomy
-physiological
-physiologically
-physiologist
-physiologists
-physiology
-physiotherapist
-physiotherapists
-physiotherapy
-physique
-phytoplankton
-pi
-pianissimo
-pianist
-pianistic
-pianists
-piano
-pianoforte
-pianola
-piazza
-piazzas
-pica
-picaresque
-picasso
-piccolo
-pick
-pickaxe
-pickaxes
-picked
-picker
-pickerel
-pickerels
-pickers
-picket
-picketed
-picketing
-pickets
-picking
-pickings
-pickle
-pickled
-pickles
-pickling
-pickpocket
-pickpocketing
-pickpockets
-picks
-pickup
-pickups
-picnic
-picnicked
-picnickers
-picnicking
-picnics
-picoseconds
-pictogram
-pictograms
-pictographic
-pictorial
-pictorially
-pictural
-picture
-pictured
-pictures
-picturesque
-picturesquely
-picturesqueness
-picturing
-pidgin
-pie
-piebald
-piece
-pieced
-piecemeal
-pieces
-piecewise
-piecework
-piecing
-pied
-pier
-pierce
-pierced
-piercer
-piercers
-pierces
-piercing
-piercingly
-piers
-pies
-pieta
-piety
-piezoelectric
-piffle
-pig
-pigeon
-pigeons
-piggery
-piggish
-piggy
-piggyback
-piglet
-piglets
-pigment
-pigmentation
-pigmented
-pigments
-pigs
-pigsties
-pigsty
-pigtail
-pigtailed
-pigtails
-pike
-pikemen
-pikes
-pikestaff
-pilaster
-pilasters
-pilchard
-pilchards
-pile
-piled
-piles
-pileup
-pilfer
-pilfered
-pilfering
-pilgrim
-pilgrimage
-pilgrimages
-pilgrims
-piling
-pill
-pillage
-pillaged
-pillages
-pillaging
-pillar
-pillared
-pillars
-pillbox
-pillion
-pilloried
-pillories
-pillory
-pillow
-pillowcase
-pillowcases
-pillowed
-pillows
-pills
-pilot
-piloted
-piloting
-pilots
-pimp
-pimpernel
-pimping
-pimple
-pimpled
-pimples
-pimply
-pimps
-pin
-pinafore
-pinafores
-pinball
-pincer
-pincered
-pincers
-pinch
-pinched
-pincher
-pinches
-pinching
-pincushion
-pincushions
-pine
-pineal
-pineapple
-pineapples
-pined
-pines
-ping
-pingpong
-pings
-pinhead
-pinheads
-pinhole
-pinholes
-pining
-pinion
-pinioned
-pinions
-pink
-pinked
-pinker
-pinkie
-pinkies
-pinking
-pinkish
-pinkness
-pinks
-pinky
-pinnacle
-pinnacled
-pinnacles
-pinned
-pinning
-pinpoint
-pinpointed
-pinpointing
-pinpoints
-pinprick
-pinpricks
-pins
-pinstripe
-pinstriped
-pinstripes
-pint
-pints
-pintsized
-pinup
-pinups
-piny
-pion
-pioneer
-pioneered
-pioneering
-pioneers
-pions
-pious
-piously
-pip
-pipe
-piped
-pipeline
-pipelines
-piper
-pipers
-pipes
-pipette
-pipettes
-pipework
-piping
-pipings
-pipit
-pipits
-pipped
-pippin
-pipping
-pips
-piquancy
-piquant
-pique
-piqued
-piracies
-piracy
-piranha
-piranhas
-pirate
-pirated
-pirates
-piratical
-pirating
-pirouette
-pirouetted
-pirouettes
-pirouetting
-pisa
-pistol
-pistols
-piston
-pistons
-pit
-pitbull
-pitch
-pitchdark
-pitched
-pitcher
-pitchers
-pitches
-pitchfork
-pitchforks
-pitching
-piteous
-piteously
-pitfall
-pitfalls
-pith
-pithead
-pithier
-pithiest
-pithily
-piths
-pithy
-pitiable
-pitiably
-pitied
-pities
-pitiful
-pitifully
-pitiless
-pitilessly
-piton
-pitons
-pits
-pittance
-pitted
-pitting
-pituitary
-pity
-pitying
-pityingly
-pivot
-pivotal
-pivoted
-pivoting
-pivots
-pixel
-pixels
-pixie
-pixies
-pizazz
-pizza
-pizzas
-pizzeria
-pizzerias
-pizzicato
-placard
-placards
-placate
-placated
-placates
-placating
-placatingly
-placatory
-place
-placebo
-placed
-placeholder
-placemen
-placement
-placements
-placenta
-placentae
-placental
-placentas
-placer
-placers
-places
-placid
-placidity
-placidly
-placing
-placings
-plagiarise
-plagiarised
-plagiarising
-plagiarism
-plagiarist
-plagiarists
-plague
-plagued
-plagues
-plaguing
-plaice
-plaid
-plaids
-plain
-plainest
-plainly
-plainness
-plains
-plaint
-plaintiff
-plaintiffs
-plaintive
-plaintively
-plait
-plaited
-plaiting
-plaits
-plan
-planar
-plane
-planed
-planes
-planet
-planetarium
-planetary
-planetesimals
-planetoids
-planets
-plangent
-planing
-plank
-planking
-planks
-plankton
-planktonic
-planned
-planner
-planners
-planning
-plans
-plant
-plantain
-plantation
-plantations
-planted
-planter
-planters
-planting
-plantings
-plants
-plaque
-plaques
-plasm
-plasma
-plasmas
-plasmid
-plasmids
-plaster
-plasterboard
-plastered
-plasterer
-plasterers
-plastering
-plasters
-plasterwork
-plastic
-plasticised
-plasticisers
-plasticity
-plastics
-plate
-plateau
-plateaus
-plateaux
-plated
-plateful
-platefuls
-platelet
-platelets
-platen
-platens
-plates
-platform
-platforms
-plating
-platinum
-platitude
-platitudes
-platitudinous
-plato
-platonic
-platoon
-platoons
-platter
-platters
-platypus
-platypuses
-plaudits
-plausibility
-plausible
-plausibly
-play
-playable
-playback
-playboy
-playboys
-played
-player
-players
-playfellow
-playfellows
-playful
-playfully
-playfulness
-playground
-playgrounds
-playgroup
-playgroups
-playhouse
-playing
-playings
-playmate
-playmates
-playroom
-plays
-plaything
-playthings
-playtime
-playwright
-playwrights
-plaza
-plazas
-plea
-plead
-pleaded
-pleading
-pleadingly
-pleadings
-pleads
-pleas
-pleasant
-pleasanter
-pleasantest
-pleasantly
-pleasantness
-pleasantries
-pleasantry
-please
-pleased
-pleases
-pleasing
-pleasingly
-pleasurable
-pleasurably
-pleasure
-pleasures
-pleat
-pleated
-pleats
-pleb
-plebeian
-plebiscite
-plebs
-plectrum
-plectrums
-pledge
-pledged
-pledges
-pledging
-plenary
-plenipotentiary
-plenitude
-plenteous
-plenteously
-plentiful
-plentifully
-plenty
-plenum
-plethora
-pleura
-pleural
-pleurisy
-plexus
-pliable
-pliant
-plied
-pliers
-plies
-plight
-plights
-plimsolls
-plinth
-plinths
-plod
-plodded
-plodder
-plodding
-plods
-plop
-plopped
-plopping
-plops
-plosive
-plot
-plots
-plotted
-plotter
-plotters
-plotting
-plough
-ploughed
-ploughers
-ploughing
-ploughman
-ploughmen
-ploughs
-ploughshare
-ploughshares
-plover
-plovers
-ploy
-ploys
-pluck
-plucked
-plucker
-pluckier
-pluckiest
-plucking
-plucks
-plucky
-plug
-plugged
-plugging
-plughole
-plugs
-plum
-plumage
-plumages
-plumb
-plumbago
-plumbed
-plumber
-plumbers
-plumbing
-plumbs
-plume
-plumed
-plumes
-pluming
-plummet
-plummeted
-plummeting
-plummets
-plummy
-plump
-plumped
-plumper
-plumping
-plumpness
-plums
-plumtree
-plumy
-plunder
-plundered
-plunderers
-plundering
-plunders
-plunge
-plunged
-plunger
-plungers
-plunges
-plunging
-pluperfect
-plural
-pluralisation
-pluralise
-pluralised
-pluralising
-pluralism
-pluralist
-pluralistic
-pluralists
-plurality
-plurals
-plus
-pluses
-plush
-plushy
-pluto
-plutocracy
-plutocrats
-plutonic
-plutonium
-ply
-plying
-plywood
-pneumatic
-pneumatics
-pneumonia
-poach
-poached
-poacher
-poachers
-poaches
-poaching
-pock
-pocked
-pocket
-pocketbook
-pocketed
-pocketful
-pocketing
-pockets
-pockmarked
-pocks
-pod
-podded
-podgy
-podia
-podium
-podiums
-pods
-poem
-poems
-poet
-poetess
-poetic
-poetical
-poetically
-poetics
-poetise
-poetry
-poets
-pogo
-pogrom
-pogroms
-poignancy
-poignant
-poignantly
-poikilothermic
-poinsettias
-point
-pointblank
-pointed
-pointedly
-pointedness
-pointer
-pointers
-pointillism
-pointillist
-pointing
-pointless
-pointlessly
-pointlessness
-points
-pointy
-poise
-poised
-poises
-poising
-poison
-poisoned
-poisoner
-poisoning
-poisonings
-poisonous
-poisons
-poke
-poked
-poker
-pokerfaced
-pokers
-pokes
-poking
-poky
-poland
-polar
-polarisation
-polarisations
-polarise
-polarised
-polarising
-polarities
-polarity
-polder
-pole
-polecat
-polecats
-poled
-polemic
-polemical
-polemicist
-polemics
-poles
-polestar
-polevaulting
-poleward
-polewards
-police
-policed
-policeman
-policemen
-polices
-policewoman
-policewomen
-policies
-policing
-policy
-policyholder
-policyholders
-polio
-poliomyelitis
-polish
-polished
-polisher
-polishers
-polishes
-polishing
-polishings
-politburo
-polite
-politely
-politeness
-politer
-politesse
-politest
-politic
-political
-politically
-politician
-politicians
-politicisation
-politicise
-politicised
-politicising
-politicking
-politics
-polity
-polka
-polkas
-poll
-pollarded
-polled
-pollen
-pollens
-pollinate
-pollinated
-pollinating
-pollination
-pollinator
-pollinators
-polling
-polls
-pollster
-pollsters
-pollutant
-pollutants
-pollute
-polluted
-polluter
-polluters
-pollutes
-polluting
-pollution
-pollutions
-polo
-polonaise
-polonaises
-poloneck
-polonies
-polonium
-polony
-poltergeist
-poltergeists
-poltroon
-polyandry
-polyatomic
-polycarbonate
-polychromatic
-polychrome
-polycotton
-polycrystalline
-polycyclic
-polyester
-polyesters
-polyethylene
-polygamous
-polygamy
-polyglot
-polyglots
-polygon
-polygonal
-polygons
-polygraph
-polygynous
-polygyny
-polyhedra
-polyhedral
-polyhedron
-polymath
-polymer
-polymerase
-polymerases
-polymeric
-polymerisation
-polymerised
-polymers
-polymorphic
-polymorphism
-polymorphisms
-polymorphous
-polynomial
-polynomially
-polynomials
-polyp
-polypeptide
-polypeptides
-polyphonic
-polyphony
-polypropylene
-polyps
-polysaccharide
-polysaccharides
-polystyrene
-polysyllabic
-polysyllable
-polysyllables
-polytechnic
-polytechnics
-polytheism
-polytheist
-polytheistic
-polytheists
-polythene
-polytopes
-polyunsaturated
-polyunsaturates
-polyurethane
-pomade
-pomades
-pomegranate
-pomegranates
-pomelo
-pomp
-pompadour
-pompeii
-pompey
-pomposity
-pompous
-pompously
-pompousness
-ponce
-poncho
-pond
-ponder
-pondered
-pondering
-ponderous
-ponderously
-ponders
-ponds
-ponies
-pontiff
-pontiffs
-pontifical
-pontificate
-pontificated
-pontificating
-pontification
-pontifications
-pontoon
-pontoons
-pony
-ponytail
-pooch
-pooches
-poodle
-poodles
-poof
-pooh
-pool
-pooled
-pooling
-pools
-poolside
-poop
-poor
-poorer
-poorest
-poorly
-poorness
-poorspirited
-pop
-popcorn
-pope
-popes
-popeyed
-poplar
-poplars
-popmusic
-popped
-popper
-poppet
-poppies
-popping
-poppy
-poppycock
-pops
-populace
-popular
-popularisation
-popularisations
-popularise
-popularised
-popularising
-popularity
-popularly
-populate
-populated
-populating
-population
-populations
-populism
-populist
-populists
-populous
-popup
-porcelain
-porch
-porches
-porcine
-porcupine
-porcupines
-pore
-pored
-pores
-poring
-pork
-porkchop
-porker
-porky
-porn
-porno
-pornographer
-pornographers
-pornographic
-pornography
-porns
-porosity
-porous
-porphyritic
-porphyry
-porpoise
-porpoises
-porridge
-port
-portability
-portable
-portables
-portage
-portal
-portals
-portcullis
-portcullises
-ported
-portend
-portended
-portending
-portends
-portent
-portentous
-portentously
-portents
-porter
-porterage
-porters
-portfolio
-porthole
-portholes
-portico
-porting
-portion
-portions
-portly
-portmanteau
-portmanteaus
-portrait
-portraitist
-portraits
-portraiture
-portray
-portrayal
-portrayals
-portrayed
-portraying
-portrays
-ports
-portugal
-pose
-posed
-poseidon
-poser
-posers
-poses
-poseur
-poseurs
-posh
-posies
-posing
-posit
-posited
-positing
-position
-positionable
-positional
-positionally
-positioned
-positioning
-positions
-positive
-positively
-positiveness
-positives
-positivism
-positivist
-positivists
-positivity
-positron
-positrons
-posits
-posse
-possess
-possessed
-possesses
-possessing
-possession
-possessions
-possessive
-possessively
-possessiveness
-possessives
-possessor
-possessors
-possibilities
-possibility
-possible
-possibles
-possibly
-possum
-possums
-post
-postage
-postal
-postbag
-postbox
-postboxes
-postcard
-postcards
-postcode
-postcodes
-postdated
-posted
-poster
-posterior
-posteriors
-posterity
-posters
-postfixes
-postgraduate
-postgraduates
-posthumous
-posthumously
-postilion
-postilions
-postillion
-posting
-postings
-postlude
-postman
-postmark
-postmarked
-postmarks
-postmaster
-postmasters
-postmen
-postmistress
-postmodern
-postmodernism
-postmodernist
-postmortem
-postmortems
-postnatal
-postoperative
-postoperatively
-postpone
-postponed
-postponement
-postponements
-postpones
-postponing
-posts
-postscript
-postscripts
-postulate
-postulated
-postulates
-postulating
-postulation
-postural
-posture
-postured
-postures
-posturing
-posturings
-posy
-pot
-potable
-potash
-potassium
-potato
-potbellied
-potch
-potencies
-potency
-potent
-potentate
-potentates
-potential
-potentialities
-potentiality
-potentially
-potentials
-potentiometer
-potentiometers
-potently
-pothole
-potholes
-potion
-potions
-potpourri
-pots
-potsherds
-potshot
-potshots
-pottage
-potted
-potter
-pottered
-potteries
-pottering
-potters
-pottery
-potties
-potting
-potty
-pouch
-pouches
-pouffe
-pouffes
-poult
-poulterer
-poultice
-poultry
-pounce
-pounced
-pounces
-pouncing
-pound
-poundage
-pounded
-pounding
-pounds
-pour
-pourable
-poured
-pouring
-pours
-pout
-pouted
-pouter
-pouting
-pouts
-poverty
-povertystricken
-powder
-powdered
-powdering
-powders
-powdery
-power
-powerboat
-powerboats
-powered
-powerful
-powerfully
-powerfulness
-powerhouse
-powerhouses
-powering
-powerless
-powerlessness
-powers
-powersharing
-pox
-practicabilities
-practicability
-practicable
-practical
-practicalities
-practicality
-practically
-practicals
-practice
-practices
-practise
-practised
-practises
-practising
-practitioner
-practitioners
-pragmatic
-pragmatically
-pragmatics
-pragmatism
-pragmatist
-pragmatists
-prague
-prairie
-prairies
-praise
-praised
-praises
-praiseworthy
-praising
-praline
-pram
-prams
-prance
-pranced
-prancer
-prancing
-prang
-prank
-pranks
-prankster
-pranksters
-prat
-prattle
-prattled
-prattler
-prattling
-prawn
-prawns
-pray
-prayed
-prayer
-prayerbook
-prayerful
-prayerfully
-prayers
-praying
-prays
-pre
-preach
-preached
-preacher
-preachers
-preaches
-preaching
-preachings
-preadolescent
-preallocate
-preamble
-preambles
-preamp
-preamplifier
-prearranged
-preauthorise
-prebend
-prebendary
-precarious
-precariously
-precariousness
-precaution
-precautionary
-precautions
-precede
-preceded
-precedence
-precedences
-precedent
-precedents
-precedes
-preceding
-precept
-precepts
-precess
-precessed
-precessing
-precession
-precinct
-precincts
-precious
-preciously
-preciousness
-precipice
-precipices
-precipitate
-precipitated
-precipitately
-precipitates
-precipitating
-precipitation
-precipitous
-precipitously
-precis
-precise
-precisely
-preciseness
-precision
-precisions
-preclinical
-preclude
-precluded
-precludes
-precluding
-precocious
-precociously
-precociousness
-precocity
-precognition
-precognitions
-precomputed
-preconceived
-preconception
-preconceptions
-precondition
-preconditions
-precooked
-precursor
-precursors
-predate
-predated
-predates
-predating
-predation
-predations
-predator
-predators
-predatory
-predeceased
-predecessor
-predecessors
-predeclared
-predefine
-predefined
-predefining
-predestination
-predestined
-predetermination
-predetermine
-predetermined
-predetermines
-predicament
-predicaments
-predicate
-predicated
-predicates
-predicating
-predicative
-predict
-predictability
-predictable
-predictably
-predicted
-predicting
-prediction
-predictions
-predictive
-predictor
-predictors
-predicts
-predilection
-predilections
-predispose
-predisposed
-predisposes
-predisposing
-predisposition
-predispositions
-predominance
-predominant
-predominantly
-predominate
-predominated
-predominates
-predominating
-preen
-preened
-preening
-preens
-prefab
-prefabricated
-prefabrication
-prefabs
-preface
-prefaced
-prefaces
-prefacing
-prefatory
-prefect
-prefects
-prefecture
-prefer
-preferable
-preferably
-preference
-preferences
-preferential
-preferentially
-preferment
-preferred
-preferring
-prefers
-prefigured
-prefix
-prefixed
-prefixes
-prefixing
-pregnancies
-pregnancy
-pregnant
-preheat
-preheating
-prehensile
-prehistoric
-prehistory
-prejudge
-prejudged
-prejudging
-prejudice
-prejudiced
-prejudices
-prejudicial
-prejudicing
-prelate
-prelates
-preliminaries
-preliminarily
-preliminary
-prelude
-preludes
-premature
-prematurely
-prematureness
-prematurity
-premeditate
-premeditated
-premeditation
-premenstrual
-premier
-premiere
-premiered
-premieres
-premiers
-premiership
-premise
-premised
-premises
-premising
-premiss
-premisses
-premium
-premiums
-premolar
-premolars
-premonition
-premonitions
-prenatal
-preoccupation
-preoccupations
-preoccupied
-preoccupy
-preoccupying
-preordained
-prep
-prepaid
-preparation
-preparations
-preparative
-preparatory
-prepare
-prepared
-preparedness
-preparer
-preparers
-prepares
-preparing
-prepayment
-prepays
-preplanned
-preponderance
-preponderant
-preponderantly
-preposition
-prepositional
-prepositions
-preposterous
-preposterously
-preps
-prerogative
-prerogatives
-presbytery
-preschool
-prescribe
-prescribed
-prescribes
-prescribing
-prescription
-prescriptions
-prescriptive
-prescriptively
-prescriptivism
-prescriptivist
-preselect
-preselected
-preselects
-presence
-presences
-present
-presentable
-presentation
-presentational
-presentations
-presented
-presenter
-presenters
-presentiment
-presentiments
-presenting
-presently
-presents
-preservation
-preservationists
-preservative
-preservatives
-preserve
-preserved
-preserver
-preserves
-preserving
-preset
-presets
-presetting
-preside
-presided
-presidencies
-presidency
-president
-presidential
-presidents
-presides
-presiding
-presidium
-press
-pressed
-presses
-pressing
-pressingly
-pressings
-pressman
-pressmen
-pressup
-pressups
-pressure
-pressurecooking
-pressured
-pressures
-pressuring
-pressurise
-pressurised
-pressurises
-pressurising
-prestidigitation
-prestidigitator
-prestidigitatorial
-prestige
-prestigious
-presto
-presumable
-presumably
-presume
-presumed
-presumes
-presuming
-presumption
-presumptions
-presumptive
-presumptively
-presumptuous
-presumptuously
-presumptuousness
-presuppose
-presupposed
-presupposes
-presupposing
-presupposition
-presuppositions
-pretence
-pretences
-pretend
-pretended
-pretender
-pretenders
-pretending
-pretends
-pretension
-pretensions
-pretentious
-pretentiously
-pretentiousness
-preterite
-preternatural
-preternaturally
-pretext
-pretexts
-pretor
-pretoria
-pretreated
-pretreatment
-pretreatments
-prettier
-prettiest
-prettify
-prettily
-prettiness
-pretty
-prevail
-prevailed
-prevailing
-prevails
-prevalence
-prevalent
-prevalently
-prevaricate
-prevaricated
-prevaricating
-prevarication
-prevent
-preventable
-prevented
-preventing
-prevention
-preventions
-preventive
-prevents
-preview
-previewed
-previewer
-previewers
-previewing
-previews
-previous
-previously
-prevue
-prevues
-prey
-preyed
-preying
-preys
-priapic
-price
-priced
-priceless
-prices
-pricewar
-pricey
-pricier
-pricing
-prick
-pricked
-pricking
-prickle
-prickled
-prickles
-pricklier
-prickliest
-prickliness
-prickling
-prickly
-pricks
-pricy
-pride
-prided
-prides
-pried
-pries
-priest
-priestess
-priestesses
-priesthood
-priestly
-priests
-prig
-priggish
-priggishly
-priggishness
-prim
-primacy
-primaeval
-primal
-primaries
-primarily
-primary
-primate
-primates
-prime
-primed
-primeness
-primer
-primers
-primes
-primetime
-primeval
-priming
-primitive
-primitively
-primitiveness
-primitives
-primly
-primness
-primogeniture
-primordial
-primrose
-primroses
-primus
-prince
-princelings
-princely
-princes
-princess
-princesses
-principal
-principalities
-principality
-principally
-principals
-principle
-principled
-principles
-print
-printable
-printed
-printer
-printers
-printing
-printings
-printmakers
-printmaking
-printout
-printouts
-prints
-prions
-prior
-priories
-priorities
-prioritisation
-prioritise
-prioritised
-prioritises
-prioritising
-priority
-priors
-priory
-prise
-prised
-prises
-prising
-prism
-prismatic
-prisms
-prison
-prisoner
-prisoners
-prisons
-prissy
-pristine
-privacy
-private
-privateer
-privateers
-privately
-privates
-privation
-privations
-privatisation
-privatisations
-privatise
-privatised
-privatises
-privatising
-privet
-privilege
-privileged
-privileges
-privileging
-privy
-prize
-prized
-prizer
-prizes
-prizewinner
-prizing
-pro
-proactive
-probabilist
-probabilistic
-probabilistically
-probabilities
-probability
-probable
-probably
-probate
-probation
-probationary
-probative
-probe
-probed
-prober
-probes
-probing
-probity
-problem
-problematic
-problematical
-problematically
-problems
-proboscis
-procedural
-procedurally
-procedure
-procedures
-proceed
-proceeded
-proceeding
-proceedings
-proceeds
-process
-processable
-processed
-processes
-processing
-procession
-processional
-processions
-processor
-processors
-proclaim
-proclaimed
-proclaimers
-proclaiming
-proclaims
-proclamation
-proclamations
-proclivities
-proclivity
-procrastinate
-procrastinating
-procrastination
-procrastinations
-procrastinator
-procrastinators
-procreate
-procreated
-procreating
-procreation
-procreational
-procreative
-procreatory
-proctor
-proctorial
-proctors
-procurable
-procure
-procured
-procurement
-procurements
-procures
-procuring
-prod
-prodded
-prodding
-prodeo
-prodigal
-prodigality
-prodigally
-prodigies
-prodigious
-prodigiously
-prodigy
-prods
-produce
-produced
-producer
-producers
-produces
-producible
-producing
-product
-production
-productions
-productive
-productively
-productivity
-products
-profanation
-profane
-profaned
-profanely
-profaneness
-profanities
-profanity
-profess
-professed
-professedly
-professes
-professing
-profession
-professional
-professionalisation
-professionalised
-professionalism
-professionally
-professionals
-professions
-professor
-professorial
-professors
-professorship
-professorships
-proffer
-proffered
-proffering
-proffers
-proficiencies
-proficiency
-proficient
-proficiently
-profile
-profiled
-profiles
-profiling
-profit
-profitability
-profitable
-profitably
-profited
-profiteering
-profiteers
-profiteroles
-profiting
-profitless
-profits
-profittaking
-profligacy
-profligate
-profligately
-proforma
-proformas
-profound
-profounder
-profoundest
-profoundly
-profundity
-profuse
-profusely
-profuseness
-profusion
-progenitor
-progenitors
-progeny
-progesterone
-prognoses
-prognosis
-prognosticate
-prognostication
-prognostications
-program
-programmable
-programmatic
-programme
-programmed
-programmer
-programmers
-programmes
-programming
-programs
-progress
-progressed
-progresses
-progressing
-progression
-progressions
-progressive
-progressively
-progressiveness
-progressives
-prohibit
-prohibited
-prohibiting
-prohibition
-prohibitionist
-prohibitionists
-prohibitions
-prohibitive
-prohibitively
-prohibits
-project
-projected
-projectile
-projectiles
-projecting
-projection
-projectionist
-projections
-projective
-projectively
-projector
-projectors
-projects
-prokaryotes
-prolactin
-prolapse
-prolapsed
-proletarian
-proletarianisation
-proletarians
-proletariat
-proliferate
-proliferated
-proliferates
-proliferating
-proliferation
-proliferative
-prolific
-prolifically
-prolix
-prologue
-prologues
-prolong
-prolongation
-prolonged
-prolonging
-prolongs
-promenade
-promenaded
-promenader
-promenaders
-promenades
-prominence
-prominences
-prominent
-prominently
-promiscuity
-promiscuous
-promiscuously
-promise
-promised
-promises
-promising
-promisingly
-promissory
-promontories
-promontory
-promotable
-promote
-promoted
-promoter
-promoters
-promotes
-promoting
-promotion
-promotional
-promotions
-prompt
-prompted
-prompter
-prompters
-prompting
-promptings
-promptitude
-promptly
-promptness
-prompts
-promulgate
-promulgated
-promulgating
-promulgation
-promulgations
-prone
-proneness
-prong
-prongs
-pronominal
-pronoun
-pronounce
-pronounceable
-pronounced
-pronouncedly
-pronouncement
-pronouncements
-pronounces
-pronouncing
-pronouns
-pronto
-pronunciation
-pronunciations
-proof
-proofed
-proofing
-proofread
-proofreader
-proofreaders
-proofreading
-proofreads
-proofs
-prop
-propaganda
-propagandist
-propagandists
-propagate
-propagated
-propagates
-propagating
-propagation
-propagator
-propagators
-propane
-propel
-propellant
-propellants
-propelled
-propeller
-propellers
-propelling
-propels
-propensities
-propensity
-proper
-properly
-propertied
-properties
-property
-prophecies
-prophecy
-prophesied
-prophesies
-prophesy
-prophesying
-prophet
-prophetess
-prophetic
-prophetically
-prophets
-prophylactic
-prophylactics
-prophylaxis
-propinquity
-propionate
-propitiate
-propitiated
-propitiating
-propitiation
-propitiatory
-propitious
-proponent
-proponents
-proportion
-proportional
-proportionality
-proportionally
-proportionate
-proportionately
-proportioned
-proportions
-proposal
-proposals
-propose
-proposed
-proposer
-proposers
-proposes
-proposing
-proposition
-propositional
-propositioned
-propositioning
-propositions
-propound
-propounded
-propounding
-propped
-propping
-proprietary
-proprieties
-proprietor
-proprietorial
-proprietorially
-proprietors
-proprietorship
-proprietress
-propriety
-proprioceptive
-props
-propulsion
-propulsive
-propylene
-pros
-prosaic
-prosaically
-prosaist
-proscenium
-proscribe
-proscribed
-proscription
-proscriptive
-prose
-prosecutable
-prosecute
-prosecuted
-prosecutes
-prosecuting
-prosecution
-prosecutions
-prosecutor
-prosecutorial
-prosecutors
-proselytise
-proselytising
-prosodic
-prosody
-prospect
-prospecting
-prospective
-prospectively
-prospector
-prospectors
-prospects
-prospectus
-prospectuses
-prosper
-prospered
-prospering
-prosperity
-prosperous
-prosperously
-prospers
-prostaglandin
-prostaglandins
-prostate
-prostates
-prostatic
-prosthesis
-prosthetic
-prostitute
-prostituted
-prostitutes
-prostituting
-prostitution
-prostrate
-prostrated
-prostrates
-prostrating
-prostration
-protactinium
-protagonist
-protagonists
-protea
-protean
-proteas
-protease
-protect
-protected
-protecting
-protection
-protectionism
-protectionist
-protectionists
-protections
-protective
-protectively
-protectiveness
-protector
-protectorate
-protectorates
-protectors
-protects
-protege
-protegee
-protegees
-proteges
-protein
-proteins
-protest
-protestant
-protestantism
-protestants
-protestation
-protestations
-protested
-protester
-protesters
-protesting
-protestor
-protestors
-protests
-protists
-protocol
-protocols
-proton
-protons
-protoplasm
-protoplasmic
-prototype
-prototyped
-prototypes
-prototypical
-prototyping
-protozoa
-protozoan
-protozoans
-protract
-protracted
-protractor
-protractors
-protrude
-protruded
-protrudes
-protruding
-protrusion
-protrusions
-protrusive
-protuberance
-protuberances
-proud
-prouder
-proudest
-proudly
-provable
-provably
-prove
-proved
-proven
-provenance
-provence
-proverb
-proverbial
-proverbially
-proverbs
-proves
-providable
-provide
-provided
-providence
-provident
-providential
-providentially
-provider
-providers
-provides
-providing
-province
-provinces
-provincial
-provincialism
-proving
-provision
-provisional
-provisionally
-provisioned
-provisioning
-provisions
-provocation
-provocations
-provocative
-provocatively
-provoke
-provoked
-provoker
-provokes
-provoking
-provokingly
-provost
-prow
-prowess
-prowl
-prowled
-prowler
-prowlers
-prowling
-prowls
-prows
-proxies
-proximal
-proximally
-proximate
-proximately
-proximity
-proximo
-proxy
-prude
-prudence
-prudent
-prudential
-prudently
-prudery
-prudish
-prudishness
-prune
-pruned
-pruners
-prunes
-pruning
-prunings
-prurience
-prurient
-pruritus
-prussia
-prussian
-prussic
-pry
-prying
-pryings
-psalm
-psalmist
-psalmody
-psalms
-psalter
-psalters
-psaltery
-psephologist
-pseudo
-pseudonym
-pseudonymous
-pseudonyms
-pseudopod
-psoriasis
-psyche
-psychedelia
-psychedelic
-psychiatric
-psychiatrist
-psychiatrists
-psychiatry
-psychic
-psychically
-psychics
-psycho
-psychoanalyse
-psychoanalysis
-psychoanalyst
-psychoanalysts
-psychoanalytic
-psychokinesis
-psychokinetic
-psycholinguistic
-psycholinguistics
-psycholinguists
-psychological
-psychologically
-psychologies
-psychologist
-psychologists
-psychology
-psychometric
-psychopath
-psychopathic
-psychopathology
-psychopaths
-psychoses
-psychosis
-psychosocial
-psychosomatic
-psychotherapist
-psychotherapists
-psychotherapy
-psychotic
-psychotically
-psychotics
-ptarmigan
-ptarmigans
-pterodactyl
-pterosaurs
-ptolemy
-pub
-puberty
-pubescent
-pubic
-public
-publican
-publicans
-publication
-publications
-publicise
-publicised
-publicises
-publicising
-publicist
-publicists
-publicity
-publicly
-publish
-publishable
-published
-publisher
-publishers
-publishes
-publishing
-pubs
-pudding
-puddings
-puddle
-puddles
-puerile
-puerility
-puerperal
-puff
-puffballs
-puffed
-puffer
-puffin
-puffiness
-puffing
-puffins
-puffs
-puffy
-pug
-pugilist
-pugilistic
-pugnacious
-pugnaciously
-pugnacity
-pugs
-puissant
-puke
-puking
-pulchritude
-puling
-pull
-pulled
-puller
-pullets
-pulley
-pulleys
-pulling
-pullover
-pullovers
-pulls
-pulmonary
-pulp
-pulped
-pulping
-pulpit
-pulpits
-pulps
-pulpy
-pulsar
-pulsars
-pulsate
-pulsated
-pulsates
-pulsating
-pulsation
-pulsations
-pulse
-pulsed
-pulses
-pulsing
-pulverisation
-pulverise
-pulverised
-pulverising
-puma
-pumas
-pumice
-pummel
-pummelled
-pummelling
-pummels
-pump
-pumped
-pumping
-pumpkin
-pumpkins
-pumps
-pun
-punch
-punchable
-punchbowl
-punchcard
-punched
-puncher
-punches
-punching
-punchline
-punchlines
-punchy
-punctate
-punctilious
-punctiliously
-punctual
-punctuality
-punctually
-punctuate
-punctuated
-punctuates
-punctuating
-punctuation
-punctuational
-punctuations
-puncture
-punctured
-punctures
-puncturing
-pundit
-pundits
-pungency
-pungent
-pungently
-punier
-puniest
-punish
-punishable
-punished
-punishes
-punishing
-punishment
-punishments
-punitive
-punitively
-punk
-punks
-punky
-punned
-punnet
-punning
-puns
-punster
-punt
-punted
-punter
-punters
-punting
-punts
-puny
-pup
-pupa
-pupae
-pupal
-pupated
-pupates
-pupating
-pupil
-pupillage
-pupils
-puppet
-puppeteer
-puppetry
-puppets
-puppies
-puppy
-puppyhood
-pups
-purblind
-purchasable
-purchase
-purchased
-purchaser
-purchasers
-purchases
-purchasing
-purdah
-pure
-puree
-purees
-purely
-pureness
-purer
-purest
-purgative
-purgatorial
-purgatory
-purge
-purged
-purges
-purging
-purgings
-purification
-purified
-purifier
-purifies
-purify
-purifying
-purims
-purines
-purist
-purists
-puritan
-puritanical
-puritanism
-puritans
-purities
-purity
-purl
-purlieus
-purling
-purlins
-purloin
-purloined
-purls
-purple
-purples
-purplish
-purport
-purported
-purportedly
-purporting
-purports
-purpose
-purposed
-purposeful
-purposefully
-purposefulness
-purposeless
-purposelessly
-purposely
-purposes
-purposing
-purposive
-purr
-purred
-purring
-purrs
-purse
-pursed
-purser
-purses
-pursing
-pursuance
-pursuant
-pursue
-pursued
-pursuer
-pursuers
-pursues
-pursuing
-pursuit
-pursuits
-purvey
-purveyance
-purveyed
-purveying
-purveyor
-purveyors
-purview
-pus
-push
-pushable
-pushed
-pusher
-pushers
-pushes
-pushier
-pushing
-pushovers
-pushups
-pushy
-puss
-pussy
-pussycat
-pussyfooting
-pustular
-pustule
-pustules
-put
-putative
-putatively
-putput
-putrefaction
-putrefy
-putrefying
-putrescent
-putrid
-putridity
-puts
-putsch
-putt
-putted
-putter
-putters
-putti
-putting
-putts
-putty
-puzzle
-puzzled
-puzzlement
-puzzler
-puzzles
-puzzling
-puzzlingly
-pygmies
-pygmy
-pyjama
-pyjamas
-pylon
-pylons
-pyracantha
-pyramid
-pyramidal
-pyramids
-pyre
-pyres
-pyridine
-pyrite
-pyrites
-pyrolyse
-pyrolysis
-pyromaniac
-pyromaniacs
-pyrotechnic
-pyrotechnics
-pyroxene
-pyroxenes
-python
-pythons
-qatar
-qua
-quack
-quacked
-quacking
-quackish
-quacks
-quadrangle
-quadrangles
-quadrangular
-quadrant
-quadrants
-quadratic
-quadratically
-quadratics
-quadrature
-quadratures
-quadrilateral
-quadrilaterals
-quadrille
-quadrilles
-quadripartite
-quadrophonic
-quadruped
-quadrupeds
-quadruple
-quadrupled
-quadruples
-quadruplets
-quadruplicate
-quadrupling
-quadruply
-quadrupole
-quaff
-quaffed
-quaffing
-quagga
-quaggas
-quagmire
-quagmires
-quail
-quailed
-quails
-quaint
-quainter
-quaintly
-quaintness
-quake
-quaked
-quaker
-quakers
-quakes
-quaking
-qualification
-qualifications
-qualified
-qualifier
-qualifiers
-qualifies
-qualify
-qualifying
-qualitative
-qualitatively
-qualities
-quality
-qualm
-qualms
-quantifiable
-quantification
-quantified
-quantifier
-quantifiers
-quantifies
-quantify
-quantifying
-quantisation
-quantise
-quantised
-quantitative
-quantitatively
-quantities
-quantity
-quantum
-quarantine
-quarantined
-quark
-quarks
-quarrel
-quarrelled
-quarrelling
-quarrels
-quarrelsome
-quarried
-quarries
-quarry
-quarrying
-quarrymen
-quart
-quarter
-quarterback
-quartered
-quartering
-quarterly
-quartermaster
-quarters
-quarterstaff
-quarterstaffs
-quartet
-quartets
-quartic
-quartics
-quartile
-quartiles
-quarto
-quarts
-quartz
-quartzite
-quasar
-quasars
-quash
-quashed
-quashing
-quasi
-quasilinear
-quaternary
-quaternion
-quaternions
-quatrain
-quatrains
-quaver
-quavered
-quavering
-quavers
-quay
-quays
-quayside
-queasiness
-queasy
-quebec
-queen
-queenly
-queens
-queer
-queerest
-queerly
-quell
-quelled
-quelling
-quells
-quench
-quenched
-quencher
-quenchers
-quenches
-quenching
-queried
-queries
-quern
-querulous
-querulously
-querulousness
-query
-querying
-quest
-questing
-question
-questionable
-questionably
-questioned
-questioner
-questioners
-questioning
-questioningly
-questionings
-questionnaire
-questionnaires
-questions
-quests
-queue
-queued
-queueing
-queues
-queuing
-quibble
-quibbles
-quibbling
-quiche
-quiches
-quick
-quicken
-quickened
-quickening
-quickens
-quicker
-quickest
-quicklime
-quickly
-quickness
-quicksand
-quicksands
-quicksilver
-quickwitted
-quid
-quids
-quiesce
-quiesced
-quiescence
-quiescent
-quiet
-quieted
-quieten
-quietened
-quietening
-quietens
-quieter
-quietest
-quieting
-quietly
-quietness
-quiets
-quietus
-quiff
-quill
-quills
-quilt
-quilted
-quilting
-quilts
-quince
-quincentenary
-quinces
-quinine
-quinquennial
-quintessence
-quintessential
-quintessentially
-quintet
-quintets
-quintic
-quintillion
-quintuple
-quip
-quipped
-quipper
-quips
-quire
-quirk
-quirkier
-quirkiest
-quirkiness
-quirks
-quirky
-quisling
-quit
-quite
-quits
-quitted
-quitter
-quitting
-quiver
-quivered
-quivering
-quiveringly
-quivers
-quixotic
-quiz
-quizzed
-quizzes
-quizzical
-quizzically
-quizzing
-quoins
-quoits
-quondam
-quorate
-quorum
-quota
-quotable
-quotas
-quotation
-quotations
-quote
-quoted
-quoter
-quotes
-quotidian
-quotient
-quotients
-quoting
-quovadis
-rabat
-rabats
-rabbi
-rabbis
-rabbit
-rabbiting
-rabbits
-rabble
-rabid
-rabidly
-rabies
-raccoon
-raccoons
-race
-racecourse
-racecourses
-raced
-racegoers
-racehorse
-racehorses
-racer
-racers
-races
-racetrack
-rachis
-racial
-racialism
-racialist
-racialists
-racially
-racier
-raciest
-racily
-racing
-racings
-racism
-racist
-racists
-rack
-racked
-racket
-racketeering
-rackets
-racking
-racks
-raconteur
-racoon
-racquet
-racquets
-racy
-rad
-radar
-radars
-radial
-radially
-radials
-radian
-radiance
-radiancy
-radians
-radiant
-radiantly
-radiate
-radiated
-radiates
-radiating
-radiation
-radiations
-radiative
-radiatively
-radiator
-radiators
-radical
-radicalism
-radically
-radicals
-radices
-radii
-radio
-radioactive
-radioactively
-radioactivity
-radioastronomical
-radiocarbon
-radioed
-radiogalaxies
-radiogalaxy
-radiogram
-radiograph
-radiographer
-radiographers
-radiographic
-radiographs
-radiography
-radioing
-radiological
-radiologist
-radiologists
-radiology
-radiometric
-radionuclide
-radios
-radiotherapy
-radish
-radishes
-radium
-radius
-radix
-radon
-raffia
-raffle
-raffled
-raffles
-raft
-rafter
-rafters
-rafting
-raftman
-rafts
-raftsman
-rag
-ragamuffin
-ragamuffins
-ragbag
-rage
-raged
-rages
-ragged
-raggedly
-raging
-ragout
-rags
-ragstoriches
-ragtime
-ragwort
-raid
-raided
-raider
-raiders
-raiding
-raids
-rail
-railed
-railes
-railing
-railings
-raillery
-railroad
-rails
-railway
-railwayman
-railwaymen
-railways
-raiment
-rain
-rainbow
-rainbows
-raincloud
-rainclouds
-raincoat
-raincoats
-raindrop
-raindrops
-rained
-rainfall
-rainforest
-rainforests
-rainier
-rainiest
-raining
-rainless
-rainout
-rains
-rainstorm
-rainstorms
-rainswept
-rainwater
-rainy
-raise
-raised
-raiser
-raises
-raisin
-raising
-raisins
-raj
-rajah
-rake
-raked
-rakes
-raking
-rakish
-rallied
-rallies
-rally
-rallying
-ram
-ramble
-rambled
-rambler
-ramblers
-rambles
-rambling
-ramblings
-ramification
-ramifications
-ramified
-ramifies
-ramify
-rammed
-rammer
-ramming
-ramp
-rampage
-rampaged
-rampages
-rampaging
-rampant
-rampantly
-rampart
-ramparts
-ramped
-ramping
-ramps
-ramrod
-rams
-ramshackle
-ran
-ranch
-rancher
-ranchers
-ranches
-ranching
-rancid
-rancorous
-rancour
-rand
-random
-randomisation
-randomise
-randomised
-randomising
-randomly
-randomness
-rands
-randy
-rang
-range
-ranged
-ranger
-rangers
-ranges
-ranging
-rangy
-rani
-ranis
-rank
-ranked
-ranker
-rankers
-rankest
-ranking
-rankings
-rankle
-rankled
-rankles
-rankling
-rankness
-ranks
-ransack
-ransacked
-ransacking
-ransom
-ransomed
-ransoming
-ransoms
-rant
-ranted
-ranter
-ranters
-ranting
-rantings
-rants
-rap
-rapacious
-rapacity
-rape
-raped
-rapes
-rapeseed
-rapid
-rapidity
-rapidly
-rapids
-rapier
-rapiers
-rapine
-raping
-rapist
-rapists
-rapped
-rapping
-rapport
-rapporteur
-rapporteurs
-rapports
-rapprochement
-raps
-rapt
-raptor
-raptors
-rapture
-raptures
-rapturous
-rapturously
-rare
-rarebit
-rarefaction
-rarefactions
-rarefied
-rarely
-rareness
-rarer
-rarest
-raring
-rarities
-rarity
-rascal
-rascally
-rascals
-rased
-rash
-rasher
-rashers
-rashes
-rashest
-rashly
-rashness
-rasing
-rasp
-raspberries
-raspberry
-rasped
-rasper
-rasping
-rasps
-raspy
-raster
-rasters
-rat
-ratatouille
-rate
-rated
-ratepayer
-ratepayers
-rater
-rates
-rather
-ratification
-ratifications
-ratified
-ratifier
-ratifies
-ratify
-ratifying
-rating
-ratings
-ratio
-ratiocination
-ration
-rational
-rationale
-rationales
-rationalisation
-rationalisations
-rationalise
-rationalised
-rationalising
-rationalism
-rationalist
-rationalistic
-rationalists
-rationalities
-rationality
-rationally
-rationed
-rationing
-rations
-ratios
-ratlike
-ratrace
-rats
-rattier
-rattle
-rattled
-rattler
-rattles
-rattlesnake
-rattlesnakes
-rattling
-ratty
-raucous
-raucously
-ravage
-ravaged
-ravages
-ravaging
-rave
-raved
-ravel
-ravelled
-ravelling
-ravels
-raven
-ravening
-ravenous
-ravenously
-ravens
-raver
-ravers
-raves
-ravine
-ravines
-raving
-ravingly
-ravings
-ravioli
-ravish
-ravished
-ravisher
-ravishes
-ravishing
-ravishingly
-raw
-rawest
-rawness
-ray
-rayed
-rayon
-rays
-raze
-razed
-razes
-razing
-razor
-razorbills
-razorblades
-razoring
-razors
-razorsharp
-razzmatazz
-re
-reabsorb
-reabsorbed
-reabsorption
-reaccept
-reaccessed
-reach
-reachable
-reached
-reaches
-reachieved
-reaching
-reacquainting
-reacquired
-reacquisition
-react
-reactant
-reactants
-reacted
-reacting
-reaction
-reactionaries
-reactionary
-reactions
-reactivate
-reactivated
-reactivates
-reactivating
-reactivation
-reactive
-reactivities
-reactivity
-reactor
-reactors
-reacts
-read
-readability
-readable
-readably
-readapt
-reader
-readers
-readership
-readerships
-readied
-readier
-readies
-readiest
-readily
-readiness
-reading
-readings
-readjust
-readjusted
-readjusting
-readjustment
-readjustments
-readmission
-readmit
-readmits
-readmitted
-reads
-ready
-readying
-readymade
-reaffirm
-reaffirmation
-reaffirmed
-reaffirming
-reaffirms
-reafforestation
-reagent
-reagents
-real
-realign
-realigned
-realigning
-realignment
-realignments
-realigns
-realisable
-realisation
-realisations
-realise
-realised
-realises
-realising
-realism
-realist
-realistic
-realistically
-realists
-realities
-reality
-reallife
-reallocate
-reallocated
-reallocates
-reallocating
-reallocation
-really
-realm
-realms
-realness
-realpolitik
-reals
-realty
-ream
-reams
-reanimated
-reanimating
-reap
-reaped
-reaper
-reapers
-reaping
-reappear
-reappearance
-reappeared
-reappearing
-reappears
-reapplied
-reapply
-reapplying
-reappoint
-reappointed
-reappointment
-reappraisal
-reappraised
-reappraising
-reaps
-rear
-reared
-rearer
-rearguard
-rearing
-rearm
-rearmament
-rearmed
-rearming
-rearms
-rearrange
-rearranged
-rearrangement
-rearrangements
-rearranges
-rearranging
-rears
-rearview
-rearward
-reason
-reasonable
-reasonableness
-reasonably
-reasoned
-reasoner
-reasoners
-reasoning
-reasonless
-reasons
-reassemble
-reassembled
-reassembling
-reassembly
-reassert
-reasserted
-reasserting
-reassertion
-reasserts
-reassess
-reassessed
-reassessment
-reassessments
-reassign
-reassigned
-reassigning
-reassignment
-reassigns
-reassume
-reassuming
-reassurance
-reassurances
-reassure
-reassured
-reassures
-reassuring
-reassuringly
-reattachment
-reattempt
-reawaken
-reawakened
-reawakening
-rebalanced
-rebate
-rebates
-rebel
-rebelled
-rebelling
-rebellion
-rebellions
-rebellious
-rebelliously
-rebelliousness
-rebels
-rebind
-rebirth
-rebirths
-rebook
-reboot
-rebooted
-reborn
-rebound
-rebounded
-rebounding
-rebounds
-rebuff
-rebuffed
-rebuffing
-rebuffs
-rebuild
-rebuilding
-rebuilds
-rebuilt
-rebuke
-rebuked
-rebukes
-rebuking
-reburial
-reburied
-rebury
-rebus
-rebut
-rebuttable
-rebuttal
-rebuttals
-rebutted
-rebutting
-recalcitrance
-recalcitrant
-recalculate
-recalculated
-recalculation
-recalibrate
-recalibrating
-recalibration
-recall
-recalled
-recalling
-recalls
-recant
-recantation
-recanted
-recanting
-recants
-recap
-recapitalisation
-recapitulate
-recapitulates
-recapitulation
-recapped
-recaps
-recapture
-recaptured
-recapturing
-recast
-recasting
-recasts
-recede
-receded
-recedes
-receding
-receipt
-receipted
-receipts
-receivable
-receive
-received
-receiver
-receivers
-receivership
-receives
-receiving
-recency
-recension
-recent
-recently
-receptacle
-receptacles
-reception
-receptionist
-receptionists
-receptions
-receptive
-receptiveness
-receptivity
-receptor
-receptors
-recess
-recessed
-recesses
-recession
-recessional
-recessionary
-recessions
-recessive
-recharge
-rechargeable
-recharged
-recharger
-recharges
-recharging
-recheck
-rechecked
-rechecking
-recidivism
-recidivist
-recidivists
-recipe
-recipes
-recipient
-recipients
-reciprocal
-reciprocally
-reciprocals
-reciprocate
-reciprocated
-reciprocating
-reciprocation
-reciprocity
-recirculate
-recirculated
-recirculating
-recirculation
-recital
-recitals
-recitation
-recitations
-recitative
-recitatives
-recite
-recited
-recites
-reciting
-reckless
-recklessly
-recklessness
-reckon
-reckoned
-reckoner
-reckoning
-reckons
-reclaim
-reclaimable
-reclaimed
-reclaimer
-reclaiming
-reclaims
-reclamation
-reclamations
-reclassification
-reclassified
-reclassifies
-reclassify
-reclassifying
-recline
-reclined
-recliner
-reclines
-reclining
-reclothe
-recluse
-recluses
-reclusive
-recode
-recoded
-recodes
-recoding
-recognisable
-recognisably
-recognisances
-recognise
-recognised
-recogniser
-recognisers
-recognises
-recognising
-recognition
-recognitions
-recoil
-recoiled
-recoiling
-recoils
-recollect
-recollected
-recollecting
-recollection
-recollections
-recollects
-recombinant
-recombinants
-recombination
-recombine
-recombined
-recombines
-recombining
-recommence
-recommenced
-recommencement
-recommences
-recommencing
-recommend
-recommendable
-recommendation
-recommendations
-recommended
-recommending
-recommends
-recommissioning
-recompense
-recompensed
-recompenses
-recompilation
-recompilations
-recompile
-recompiled
-recompiling
-recomputable
-recompute
-recomputed
-recomputes
-recomputing
-reconcilable
-reconcile
-reconciled
-reconcilement
-reconciles
-reconciliation
-reconciliations
-reconciling
-recondite
-reconditioned
-reconditioning
-reconfigurable
-reconfiguration
-reconfigurations
-reconfigure
-reconfigured
-reconfigures
-reconfiguring
-reconnaissance
-reconnect
-reconnected
-reconnecting
-reconnection
-reconnoitre
-reconnoitred
-reconnoitring
-reconquer
-reconquest
-reconsider
-reconsideration
-reconsidered
-reconsidering
-reconsiders
-reconstitute
-reconstituted
-reconstitutes
-reconstituting
-reconstitution
-reconstruct
-reconstructed
-reconstructing
-reconstruction
-reconstructions
-reconstructs
-reconsult
-reconsulted
-reconsulting
-recontribute
-reconvene
-reconvened
-reconvening
-reconversion
-reconvert
-reconverted
-recopied
-recopy
-record
-recordable
-recordbreaking
-recorded
-recorder
-recorders
-recording
-recordings
-recordist
-recordists
-records
-recount
-recounted
-recounting
-recounts
-recoup
-recouped
-recouping
-recouple
-recoups
-recourse
-recover
-recoverability
-recoverable
-recovered
-recoveries
-recovering
-recovers
-recovery
-recreate
-recreated
-recreates
-recreating
-recreation
-recreational
-recreations
-recriminate
-recrimination
-recriminations
-recruit
-recruited
-recruiter
-recruiters
-recruiting
-recruitment
-recruits
-recrystallisation
-rectal
-rectangle
-rectangles
-rectangular
-rectifiable
-rectification
-rectified
-rectifier
-rectifies
-rectify
-rectifying
-rectilinear
-rectitude
-recto
-rector
-rectors
-rectory
-rectrix
-rectum
-rectums
-recumbent
-recuperate
-recuperated
-recuperates
-recuperating
-recuperation
-recuperative
-recur
-recured
-recures
-recuring
-recurred
-recurrence
-recurrences
-recurrent
-recurrently
-recurring
-recurs
-recursion
-recursions
-recursive
-recursively
-recyclable
-recycle
-recycled
-recyclers
-recycles
-recycling
-red
-redaction
-redblooded
-redbreast
-redcoats
-redcross
-redden
-reddened
-reddening
-reddens
-redder
-reddest
-reddish
-redeclaration
-redecorated
-redecorating
-redecoration
-rededication
-redeem
-redeemable
-redeemed
-redeemer
-redeeming
-redeems
-redefine
-redefined
-redefiner
-redefines
-redefining
-redefinition
-redefinitions
-redeliver
-redelivery
-redemption
-redemptions
-redemptive
-redeploy
-redeployed
-redeploying
-redeployment
-redeposited
-redeposition
-redesign
-redesigned
-redesigning
-redesigns
-redevelop
-redeveloped
-redeveloping
-redevelopment
-redfaced
-redhanded
-redhead
-redheaded
-redheads
-redial
-redialling
-redirect
-redirected
-redirecting
-redirection
-redirects
-rediscover
-rediscovered
-rediscoveries
-rediscovering
-rediscovers
-rediscovery
-rediscussed
-redisplay
-redisplayed
-redistributable
-redistribute
-redistributed
-redistributes
-redistributing
-redistribution
-redistributions
-redistributive
-redneck
-redness
-redo
-redoing
-redolent
-redone
-redouble
-redoubled
-redoubling
-redoubt
-redoubtable
-redoubts
-redound
-redounded
-redox
-redraft
-redrafted
-redrafting
-redraw
-redrawing
-redrawn
-redraws
-redress
-redressed
-redressing
-reds
-redsea
-redshift
-redshifts
-redstarts
-redtape
-reduce
-reduced
-reducer
-reducers
-reduces
-reducibility
-reducible
-reducing
-reduction
-reductionism
-reductionist
-reductionists
-reductions
-reductive
-redundancies
-redundancy
-redundant
-redundantly
-redwood
-reed
-reeds
-reef
-reefed
-reefing
-reefs
-reek
-reeked
-reeking
-reeks
-reel
-reelects
-reeled
-reeling
-reels
-ref
-refer
-referable
-referee
-refereed
-refereeing
-referees
-reference
-referenced
-referencer
-references
-referencing
-referenda
-referendum
-referendums
-referent
-referential
-referentially
-referents
-referral
-referrals
-referred
-referring
-refers
-refile
-refiled
-refiling
-refill
-refillable
-refilled
-refilling
-refillings
-refills
-refinance
-refinanced
-refinancing
-refine
-refined
-refinement
-refinements
-refiner
-refineries
-refiners
-refinery
-refines
-refining
-refinish
-refit
-refits
-refitted
-refitting
-reflation
-reflect
-reflectance
-reflected
-reflecting
-reflection
-reflectional
-reflections
-reflective
-reflectively
-reflectiveness
-reflectivity
-reflector
-reflectors
-reflects
-reflex
-reflexes
-reflexion
-reflexions
-reflexive
-reflexively
-reflexiveness
-reflexivity
-reflexology
-refloat
-reflooring
-reflux
-refluxed
-refluxing
-refocus
-refocused
-refocuses
-refocusing
-refocussed
-refocusses
-refocussing
-refolded
-refolding
-reforestation
-reform
-reformable
-reformat
-reformation
-reformations
-reformative
-reformatted
-reformatting
-reformed
-reformer
-reformers
-reforming
-reformist
-reformists
-reforms
-reformulate
-reformulated
-reformulates
-reformulating
-reformulation
-reformulations
-refract
-refracted
-refracting
-refraction
-refractions
-refractive
-refractors
-refractory
-refracts
-refrain
-refrained
-refraining
-refrains
-refreeze
-refresh
-refreshable
-refreshed
-refresher
-refreshes
-refreshing
-refreshingly
-refreshment
-refreshments
-refrigerant
-refrigerants
-refrigerate
-refrigerated
-refrigeration
-refrigerator
-refrigerators
-refs
-refuel
-refuelled
-refuelling
-refuels
-refuge
-refugee
-refugees
-refuges
-refund
-refundable
-refunded
-refunding
-refunds
-refurbish
-refurbished
-refurbishing
-refurbishment
-refurbishments
-refusal
-refusals
-refuse
-refused
-refuseniks
-refuses
-refusing
-refutable
-refutation
-refutations
-refute
-refuted
-refutes
-refuting
-regain
-regained
-regaining
-regains
-regal
-regale
-regaled
-regales
-regalia
-regaling
-regality
-regally
-regard
-regarded
-regarding
-regardless
-regards
-regatta
-regattas
-regelate
-regency
-regenerate
-regenerated
-regenerates
-regenerating
-regeneration
-regenerations
-regenerative
-regent
-regents
-reggae
-regicide
-regime
-regimen
-regimens
-regiment
-regimental
-regimentation
-regimented
-regiments
-regimes
-regina
-reginas
-region
-regional
-regionalisation
-regionalism
-regionally
-regions
-register
-registered
-registering
-registers
-registrable
-registrar
-registrars
-registration
-registrations
-registries
-registry
-regrading
-regress
-regressed
-regresses
-regressing
-regression
-regressions
-regressive
-regret
-regretful
-regretfully
-regrets
-regrettable
-regrettably
-regretted
-regretting
-regroup
-regrouped
-regrouping
-regrow
-regrowth
-regular
-regularisation
-regularise
-regularised
-regularities
-regularity
-regularly
-regulars
-regulate
-regulated
-regulates
-regulating
-regulation
-regulations
-regulative
-regulator
-regulators
-regulatory
-regurgitate
-regurgitated
-regurgitating
-regurgitation
-rehabilitate
-rehabilitated
-rehabilitating
-rehabilitation
-rehash
-rehashed
-rehashes
-rehashing
-reheard
-rehearing
-rehears
-rehearsal
-rehearsals
-rehearse
-rehearsed
-rehearses
-rehearsing
-reheat
-reheated
-reheating
-reheats
-rehouse
-rehoused
-rehousing
-rehydrate
-reich
-reification
-reify
-reign
-reigned
-reigning
-reigns
-reimburse
-reimbursed
-reimbursement
-reimburses
-reimbursing
-reimplementation
-reimplemented
-reimplementing
-reimporting
-reimpose
-reimposed
-rein
-reincarnate
-reincarnated
-reincarnating
-reincarnation
-reincarnations
-reindeer
-reined
-reinfection
-reinforce
-reinforced
-reinforcement
-reinforcements
-reinforces
-reinforcing
-reining
-reinitialisation
-reinitialise
-reinitialised
-reinitialising
-reins
-reinsert
-reinserted
-reinstall
-reinstalled
-reinstalling
-reinstate
-reinstated
-reinstatement
-reinstates
-reinstating
-reinsurance
-reintegration
-reinterpret
-reinterpretation
-reinterpreted
-reinterpreting
-reintroduce
-reintroduced
-reintroduces
-reintroducing
-reintroduction
-reintroductions
-reinvent
-reinvented
-reinventing
-reinvention
-reinventions
-reinvents
-reinvest
-reinvested
-reinvestigation
-reinvestment
-reinvigorate
-reinvigorated
-reissue
-reissued
-reissues
-reissuing
-reiterate
-reiterated
-reiterates
-reiterating
-reiteration
-reject
-rejected
-rejecting
-rejection
-rejections
-rejects
-rejoice
-rejoiced
-rejoices
-rejoicing
-rejoicings
-rejoin
-rejoinder
-rejoinders
-rejoined
-rejoining
-rejoins
-rejustified
-rejuvenate
-rejuvenated
-rejuvenating
-rejuvenation
-rejuvenations
-rejuvenatory
-rekindle
-rekindled
-relabel
-relabelled
-relabelling
-relabellings
-relaid
-relapse
-relapsed
-relapses
-relapsing
-relate
-related
-relatedness
-relates
-relating
-relation
-relational
-relationally
-relations
-relationship
-relationships
-relative
-relatively
-relatives
-relativism
-relativist
-relativistic
-relativistically
-relativists
-relativity
-relator
-relaunch
-relaunched
-relaunching
-relax
-relaxant
-relaxants
-relaxation
-relaxations
-relaxed
-relaxes
-relaxing
-relaxingly
-relay
-relayed
-relaying
-relays
-relearn
-relearning
-releasable
-release
-released
-releases
-releasing
-relegate
-relegated
-relegates
-relegating
-relegation
-relent
-relented
-relenting
-relentless
-relentlessly
-relentlessness
-relents
-relevance
-relevancy
-relevant
-relevantly
-reliabilities
-reliability
-reliable
-reliably
-reliance
-reliant
-relic
-relics
-relict
-relicts
-relied
-relief
-reliefs
-relies
-relieve
-relieved
-relieves
-relieving
-relight
-relighting
-religion
-religions
-religiosity
-religious
-religiously
-religiousness
-relined
-relink
-relinked
-relinking
-relinquish
-relinquished
-relinquishes
-relinquishing
-reliquaries
-reliquary
-relish
-relished
-relishes
-relishing
-relit
-relive
-relived
-relives
-reliving
-reload
-reloaded
-reloading
-reloads
-relocatable
-relocate
-relocated
-relocates
-relocating
-relocation
-relocations
-relocked
-reluctance
-reluctant
-reluctantly
-rely
-relying
-rem
-remade
-remain
-remainder
-remaindered
-remaindering
-remainders
-remained
-remaining
-remains
-remake
-remakes
-remaking
-remand
-remanded
-remands
-remap
-remaps
-remark
-remarkable
-remarkably
-remarked
-remarking
-remarks
-remarriage
-remarried
-remarry
-remaster
-remastered
-remastering
-remasters
-rematch
-rematching
-rematerialised
-remediable
-remedial
-remedied
-remedies
-remedy
-remedying
-remember
-remembered
-remembering
-remembers
-remembrance
-remembrances
-remind
-reminded
-reminder
-reminders
-reminding
-reminds
-reminisce
-reminisced
-reminiscence
-reminiscences
-reminiscent
-reminiscently
-reminisces
-reminiscing
-remiss
-remission
-remissions
-remit
-remits
-remittal
-remittance
-remittances
-remitted
-remitting
-remix
-remixed
-remixes
-remnant
-remnants
-remodel
-remodelled
-remodelling
-remonstrance
-remonstrate
-remonstrated
-remonstrating
-remonstration
-remonstrations
-remorse
-remorseful
-remorsefully
-remorseless
-remorselessly
-remote
-remotely
-remoteness
-remoter
-remotest
-remould
-remount
-remounted
-remounts
-removable
-removal
-removals
-remove
-removed
-remover
-removers
-removes
-removing
-remunerate
-remunerated
-remuneration
-remunerative
-remus
-renaissance
-renal
-rename
-renamed
-renames
-renaming
-render
-rendered
-rendering
-renderings
-renders
-rendezvous
-rendezvoused
-rending
-rendition
-renditions
-rends
-renegade
-renegades
-renege
-reneged
-reneging
-renegotiate
-renegotiated
-renegotiating
-renegotiation
-renew
-renewable
-renewal
-renewals
-renewed
-renewing
-renews
-renormalisation
-renounce
-renounced
-renouncement
-renounces
-renouncing
-renovate
-renovated
-renovating
-renovation
-renovations
-renown
-renowned
-rent
-rental
-rentals
-rented
-renter
-renters
-rentiers
-renting
-rents
-renumber
-renumbered
-renumbering
-renunciation
-renunciations
-reoccupation
-reoccupied
-reoccupy
-reoccupying
-reoccur
-reopen
-reopened
-reopening
-reopens
-reorder
-reordered
-reordering
-reorders
-reorganisation
-reorganisations
-reorganise
-reorganised
-reorganises
-reorganising
-reorientated
-reorientates
-reorientation
-rep
-repack
-repackage
-repackaged
-repacked
-repacking
-repaid
-repaint
-repainted
-repainting
-repair
-repairable
-repaired
-repairer
-repairers
-repairing
-repairman
-repairs
-repaper
-reparation
-reparations
-repartee
-repartition
-repartitioned
-repartitioning
-repast
-repasts
-repatriate
-repatriated
-repatriating
-repatriation
-repatriations
-repay
-repayable
-repaying
-repayment
-repayments
-repays
-repeal
-repealed
-repealing
-repeals
-repeat
-repeatability
-repeatable
-repeatably
-repeated
-repeatedly
-repeater
-repeaters
-repeating
-repeats
-repel
-repelled
-repellent
-repelling
-repellingly
-repels
-repent
-repentance
-repentant
-repentantly
-repented
-repenting
-repents
-repercussion
-repercussions
-repertoire
-repertoires
-repertory
-repetition
-repetitions
-repetitious
-repetitive
-repetitively
-repetitiveness
-rephrase
-rephrased
-rephrases
-rephrasing
-repine
-repined
-repining
-replace
-replaceable
-replaced
-replacement
-replacements
-replaces
-replacing
-replanning
-replant
-replanted
-replanting
-replay
-replayed
-replaying
-replays
-replenish
-replenished
-replenishing
-replenishment
-replete
-replica
-replicable
-replicas
-replicate
-replicated
-replicates
-replicating
-replication
-replications
-replicator
-replicators
-replied
-replier
-repliers
-replies
-replotted
-replug
-replugged
-replugging
-reply
-replying
-repopulate
-repopulated
-report
-reportable
-reportage
-reported
-reportedly
-reporter
-reporters
-reporting
-reports
-repose
-reposed
-reposes
-reposing
-reposition
-repositioned
-repositioning
-repositions
-repositories
-repository
-repossess
-repossessed
-repossessing
-repossession
-repossessions
-reprehend
-reprehensible
-represent
-representable
-representation
-representational
-representations
-representative
-representativeness
-representatives
-represented
-representing
-represents
-repress
-repressed
-represses
-repressing
-repression
-repressions
-repressive
-repressively
-reprieve
-reprieved
-reprimand
-reprimanded
-reprimanding
-reprimands
-reprint
-reprinted
-reprinting
-reprints
-reprisal
-reprisals
-reprise
-reproach
-reproached
-reproaches
-reproachful
-reproachfully
-reproachfulness
-reproaching
-reprobate
-reprobates
-reprocess
-reprocessed
-reprocessing
-reproduce
-reproduced
-reproduces
-reproducibility
-reproducible
-reproducibly
-reproducing
-reproduction
-reproductions
-reproductive
-reproductively
-reprogram
-reprogrammable
-reprogramme
-reprogrammed
-reprogramming
-reprojected
-reproof
-reproofs
-reprove
-reproved
-reprovingly
-reps
-reptile
-reptiles
-reptilian
-reptilians
-republic
-republican
-republicanism
-republicans
-republication
-republics
-republish
-republished
-republishes
-republishing
-repudiate
-repudiated
-repudiates
-repudiating
-repudiation
-repugnance
-repugnant
-repulse
-repulsed
-repulsing
-repulsion
-repulsions
-repulsive
-repulsively
-repulsiveness
-repurchase
-reputable
-reputably
-reputation
-reputations
-repute
-reputed
-reputedly
-reputes
-request
-requested
-requester
-requesting
-requests
-requiem
-requiems
-require
-required
-requirement
-requirements
-requires
-requiring
-requisite
-requisites
-requisition
-requisitioned
-requisitioning
-requisitions
-requital
-requite
-requited
-reran
-reread
-rereading
-rereads
-reregistration
-rerolled
-reroute
-rerouted
-rerouteing
-reroutes
-rerouting
-rerun
-rerunning
-reruns
-resale
-rescale
-rescaled
-rescales
-rescaling
-rescan
-rescanned
-rescanning
-rescans
-reschedule
-rescheduled
-rescheduling
-rescind
-rescinded
-rescinding
-rescue
-rescued
-rescuer
-rescuers
-rescues
-rescuing
-resea
-resealed
-research
-researched
-researcher
-researchers
-researches
-researching
-reseated
-reseeding
-reselect
-reselected
-reselection
-resell
-reseller
-resellers
-reselling
-resemblance
-resemblances
-resemble
-resembled
-resembles
-resembling
-resend
-resending
-resent
-resented
-resentful
-resentfully
-resenting
-resentment
-resentments
-resents
-reservation
-reservations
-reserve
-reserved
-reserver
-reserves
-reserving
-reservists
-reservoir
-reservoirs
-reset
-resets
-resettable
-resetting
-resettle
-resettled
-resettlement
-resettling
-reshape
-reshaped
-reshapes
-reshaping
-resharpen
-resharpened
-resharpening
-reshow
-reshowing
-reshuffle
-reshuffled
-reshuffles
-reshuffling
-reside
-resided
-residence
-residences
-residency
-resident
-residential
-residents
-resides
-residing
-residual
-residuals
-residuary
-residue
-residues
-residuum
-resign
-resignal
-resignation
-resignations
-resigned
-resignedly
-resigning
-resigns
-resilience
-resilient
-resin
-resinous
-resins
-resiny
-resist
-resistance
-resistances
-resistant
-resisted
-resistible
-resisting
-resistive
-resistively
-resistivity
-resistor
-resistors
-resists
-resit
-resiting
-resits
-resize
-resizing
-resold
-resolute
-resolutely
-resolution
-resolutions
-resolvability
-resolvable
-resolve
-resolved
-resolvent
-resolver
-resolvers
-resolves
-resolving
-resonance
-resonances
-resonant
-resonantly
-resonate
-resonated
-resonates
-resonating
-resonator
-resonators
-resort
-resorted
-resorting
-resorts
-resound
-resounded
-resounding
-resoundingly
-resounds
-resource
-resourced
-resourceful
-resourcefulness
-resources
-resourcing
-respecified
-respecify
-respect
-respectability
-respectable
-respectably
-respected
-respectful
-respectfully
-respecting
-respective
-respectively
-respects
-respiration
-respirator
-respirators
-respiratory
-respire
-respired
-respite
-resplendent
-respond
-responded
-respondent
-respondents
-responder
-responders
-responding
-responds
-response
-responses
-responsibilities
-responsibility
-responsible
-responsibly
-responsive
-responsively
-responsiveness
-respray
-resprayed
-resprays
-rest
-restart
-restartable
-restarted
-restarting
-restarts
-restate
-restated
-restatement
-restates
-restating
-restaurant
-restaurants
-restaurateur
-restaurateurs
-rested
-restful
-restfulness
-resting
-restitution
-restive
-restiveness
-restless
-restlessly
-restlessness
-restock
-restocking
-restoration
-restorations
-restorative
-restore
-restored
-restorer
-restorers
-restores
-restoring
-restrain
-restrained
-restraining
-restrains
-restraint
-restraints
-restrict
-restricted
-restricting
-restriction
-restrictions
-restrictive
-restrictively
-restricts
-restroom
-restructure
-restructured
-restructures
-restructuring
-rests
-restyled
-resubmission
-resubmissions
-resubmit
-resubmits
-resubmitted
-resubmitting
-resubstitute
-result
-resultant
-resulted
-resulting
-results
-resume
-resumed
-resumes
-resuming
-resumption
-resupply
-resurface
-resurfaced
-resurfacing
-resurgence
-resurgent
-resurrect
-resurrected
-resurrecting
-resurrection
-resurrects
-resuscitate
-resuscitated
-resuscitating
-resuscitation
-retail
-retailed
-retailer
-retailers
-retailing
-retails
-retain
-retained
-retainer
-retainers
-retaining
-retains
-retake
-retaken
-retakes
-retaking
-retaliate
-retaliated
-retaliates
-retaliating
-retaliation
-retaliatory
-retard
-retardant
-retardation
-retarded
-retarding
-retards
-retch
-retched
-retching
-retell
-retelling
-retention
-retentions
-retentive
-retentiveness
-retentivity
-retest
-retested
-retesting
-retests
-rethink
-rethinking
-rethought
-reticence
-reticent
-reticular
-reticulated
-reticulation
-reticule
-reticules
-reticulum
-retied
-retina
-retinal
-retinas
-retinitis
-retinue
-retinues
-retire
-retired
-retiree
-retirement
-retirements
-retires
-retiring
-retitle
-retitled
-retitling
-retold
-retook
-retort
-retorted
-retorting
-retorts
-retouch
-retouched
-retouching
-retrace
-retraced
-retraces
-retracing
-retract
-retractable
-retracted
-retracting
-retraction
-retractions
-retracts
-retrain
-retrained
-retraining
-retral
-retransmission
-retransmissions
-retransmit
-retransmits
-retransmitted
-retransmitting
-retread
-retreads
-retreat
-retreated
-retreating
-retreats
-retrench
-retrenchment
-retrial
-retribution
-retributive
-retried
-retries
-retrievable
-retrieval
-retrievals
-retrieve
-retrieved
-retriever
-retrievers
-retrieves
-retrieving
-retro
-retroactive
-retroactively
-retrofit
-retrofitted
-retrofitting
-retrograde
-retrogressive
-retrospect
-retrospection
-retrospective
-retrospectively
-retrospectives
-retroviruses
-retry
-retrying
-retsina
-retted
-retune
-retuning
-return
-returnable
-returned
-returnees
-returning
-returns
-retype
-retyped
-retypes
-retyping
-reunification
-reunified
-reunify
-reunion
-reunions
-reunite
-reunited
-reunites
-reuniting
-reusable
-reuse
-reused
-reuses
-reusing
-rev
-revaluation
-revaluations
-revalue
-revalued
-revalues
-revamp
-revamped
-revamping
-revamps
-revanchist
-reveal
-revealable
-revealed
-revealing
-revealingly
-reveals
-reveille
-revel
-revelation
-revelations
-revelatory
-revelled
-reveller
-revellers
-revelling
-revelries
-revelry
-revels
-revenant
-revenge
-revenged
-revengeful
-revenges
-revenging
-revenue
-revenues
-reverberant
-reverberate
-reverberated
-reverberates
-reverberating
-reverberation
-reverberations
-revere
-revered
-reverence
-reverend
-reverent
-reverential
-reverentially
-reverently
-reveres
-reverie
-reveries
-revering
-reversal
-reversals
-reverse
-reversed
-reverser
-reverses
-reversibility
-reversible
-reversibly
-reversing
-reversion
-revert
-reverted
-reverting
-reverts
-review
-reviewable
-reviewed
-reviewer
-reviewers
-reviewing
-reviews
-revile
-reviled
-reviling
-revisable
-revisal
-revise
-revised
-reviser
-revises
-revising
-revision
-revisionary
-revisionism
-revisionist
-revisionists
-revisions
-revisit
-revisited
-revisiting
-revisits
-revitalisation
-revitalise
-revitalised
-revitalising
-revival
-revivalism
-revivalist
-revivalists
-revivals
-revive
-revived
-reviver
-revives
-revivify
-revivifying
-reviving
-revocable
-revocation
-revocations
-revoke
-revoked
-revoker
-revokers
-revokes
-revoking
-revolt
-revolted
-revolting
-revoltingly
-revolts
-revolution
-revolutionaries
-revolutionary
-revolutionise
-revolutionised
-revolutionises
-revolutionising
-revolutions
-revolve
-revolved
-revolver
-revolvers
-revolves
-revolving
-revs
-revue
-revues
-revulsion
-revved
-revving
-reward
-rewarded
-rewarding
-rewards
-reweighed
-rewind
-rewindable
-rewinding
-rewinds
-rewire
-rewired
-rewiring
-reword
-reworded
-rewording
-rewordings
-rework
-reworked
-reworking
-reworks
-rewound
-rewrap
-rewritable
-rewrite
-rewrites
-rewriting
-rewritings
-rewritten
-rewrote
-rhapsodic
-rhapsodical
-rhapsodies
-rhapsody
-rhea
-rhein
-rhenium
-rheological
-rheology
-rheostat
-rhesus
-rhetoric
-rhetorical
-rhetorically
-rhetorician
-rhetoricians
-rheumatic
-rheumatics
-rheumatism
-rheumatoid
-rheumatology
-rhine
-rhinestone
-rhinitis
-rhino
-rhinoceros
-rhinoceroses
-rhizome
-rho
-rhodesia
-rhodium
-rhododendron
-rhododendrons
-rhombic
-rhomboids
-rhombus
-rhombuses
-rhubarb
-rhumbas
-rhyme
-rhymed
-rhymer
-rhymes
-rhyming
-rhythm
-rhythmic
-rhythmical
-rhythmically
-rhythms
-ria
-rial
-rials
-rialto
-rib
-ribald
-ribaldry
-ribbed
-ribbing
-ribbon
-ribbons
-ribcage
-riboflavin
-ribonucleic
-ribosomal
-ribosome
-ribosomes
-ribs
-rice
-rich
-richer
-riches
-richest
-richly
-richness
-rick
-rickets
-rickety
-ricking
-ricks
-ricksha
-rickshas
-rickshaw
-rickshaws
-ricochet
-ricocheted
-ricocheting
-rid
-riddance
-ridden
-ridding
-riddle
-riddled
-riddles
-riddling
-ride
-rider
-riders
-rides
-ridge
-ridged
-ridges
-ridicule
-ridiculed
-ridicules
-ridiculing
-ridiculous
-ridiculously
-ridiculousness
-riding
-ridings
-rids
-rife
-riff
-riffle
-riffled
-riffs
-rifle
-rifled
-rifleman
-riflemen
-rifles
-rifling
-riflings
-rift
-rifting
-rifts
-rig
-rigged
-rigger
-riggers
-rigging
-right
-righted
-righten
-righteous
-righteously
-righteousness
-righter
-rightful
-rightfully
-righthand
-righthanded
-righthandedness
-righthander
-righthanders
-righting
-rightist
-rightly
-rightminded
-rightmost
-rightness
-rights
-rightthinking
-rightward
-rightwards
-rightwing
-rightwinger
-rightwingers
-rigid
-rigidifies
-rigidify
-rigidities
-rigidity
-rigidly
-rigmarole
-rigor
-rigorous
-rigorously
-rigour
-rigours
-rigs
-rile
-riled
-riles
-riling
-rill
-rills
-rim
-rime
-rimless
-rimmed
-rims
-rind
-rinds
-ring
-ringed
-ringer
-ringers
-ringing
-ringingly
-ringleader
-ringleaders
-ringless
-ringlet
-ringlets
-ringmaster
-rings
-ringside
-ringworm
-rink
-rinks
-rinse
-rinsed
-rinses
-rinsing
-riot
-rioted
-rioter
-rioters
-rioting
-riotous
-riotously
-riots
-rip
-ripcord
-ripe
-ripely
-ripen
-ripened
-ripeness
-ripening
-ripens
-riper
-ripest
-riping
-ripoff
-riposte
-riposted
-ripostes
-ripped
-ripper
-rippers
-ripping
-ripple
-rippled
-ripples
-rippling
-rips
-ripstop
-rise
-risen
-riser
-risers
-rises
-risible
-rising
-risings
-risk
-risked
-riskier
-riskiest
-riskiness
-risking
-risks
-risky
-risotto
-risque
-rissole
-rissoles
-rite
-rites
-ritual
-ritualised
-ritualistic
-ritualistically
-ritually
-rituals
-rival
-rivalled
-rivalling
-rivalries
-rivalry
-rivals
-riven
-river
-riverine
-rivers
-riverside
-rivet
-riveted
-riveter
-riveting
-rivetingly
-rivets
-riviera
-rivulet
-rivulets
-roach
-roaches
-road
-roadblock
-roadblocks
-roadhouse
-roadmap
-roads
-roadshow
-roadshows
-roadside
-roadsides
-roadsigns
-roadster
-roadsweepers
-roadway
-roadways
-roadworks
-roadworthy
-roam
-roamed
-roamer
-roaming
-roams
-roan
-roar
-roared
-roarer
-roaring
-roars
-roast
-roasted
-roaster
-roasting
-roasts
-rob
-robbed
-robber
-robberies
-robbers
-robbery
-robbing
-robe
-robed
-robes
-robin
-robins
-robot
-robotic
-robotics
-robots
-robs
-robust
-robustly
-robustness
-roc
-rock
-rockbottom
-rocked
-rocker
-rockers
-rockery
-rocket
-rocketed
-rocketing
-rocketry
-rockets
-rockfall
-rockfalls
-rockier
-rockiest
-rocking
-rocks
-rocksolid
-rocky
-rococo
-rocs
-rod
-rode
-rodent
-rodents
-rodeo
-rodeos
-rods
-roe
-roebuck
-roentgen
-roes
-rogue
-roguery
-rogues
-roguish
-roguishly
-roguishness
-roister
-roistering
-role
-roles
-roll
-rollcall
-rolled
-roller
-rollercoaster
-rollers
-rollerskating
-rollicking
-rolling
-rolls
-rolypoly
-rom
-roman
-romance
-romanced
-romancer
-romances
-romancing
-romans
-romantic
-romantically
-romanticised
-romanticises
-romanticising
-romanticism
-romantics
-romany
-rome
-rommel
-romp
-romped
-romper
-romping
-romps
-romulus
-rondavel
-roo
-roof
-roofed
-roofer
-roofgarden
-roofing
-roofings
-roofless
-roofs
-rooftop
-rooftops
-rooibos
-rook
-rookeries
-rookery
-rookies
-rooks
-room
-roomful
-roomier
-roomiest
-roommate
-rooms
-roomy
-roost
-roosted
-rooster
-roosters
-roosting
-roosts
-root
-rooted
-rooting
-rootings
-rootless
-roots
-rope
-roped
-ropes
-roping
-rosaries
-rosary
-rose
-rosebud
-rosebuds
-rosebush
-rosemary
-roses
-rosette
-rosettes
-rosewood
-rosier
-rosiest
-rosily
-rosin
-roster
-rostering
-rosters
-rostrum
-rostrums
-rosy
-rot
-rota
-rotary
-rotas
-rotatable
-rotate
-rotated
-rotates
-rotating
-rotation
-rotational
-rotationally
-rotations
-rotator
-rotators
-rotatory
-rote
-rotor
-rotors
-rots
-rotted
-rotten
-rottenly
-rottenness
-rotter
-rotting
-rotund
-rotunda
-rotundity
-rouble
-roubles
-rouge
-rouged
-rouges
-rough
-roughage
-roughed
-roughen
-roughened
-roughens
-rougher
-roughest
-roughie
-roughing
-roughly
-roughness
-roughs
-roughshod
-roulette
-round
-roundabout
-roundabouts
-rounded
-roundel
-roundels
-rounder
-rounders
-roundest
-roundhouse
-rounding
-roundish
-roundly
-roundness
-rounds
-roundtheclock
-roundup
-roundups
-rouse
-roused
-rouses
-rousing
-rout
-route
-routed
-routeing
-router
-routers
-routes
-routine
-routinely
-routines
-routing
-routs
-rove
-roved
-rover
-rovers
-roves
-roving
-rovings
-row
-rowboat
-rowboats
-rowdier
-rowdiest
-rowdily
-rowdiness
-rowdy
-rowdyism
-rowed
-rower
-rowers
-rowing
-rows
-royal
-royalist
-royalists
-royally
-royals
-royalties
-royalty
-ruanda
-rub
-rubbed
-rubber
-rubberised
-rubbers
-rubberstamp
-rubberstamped
-rubberstamping
-rubbery
-rubbing
-rubbings
-rubbish
-rubbished
-rubbishes
-rubbishing
-rubbishy
-rubble
-rubbles
-rubella
-rubicon
-rubicund
-rubidium
-rubies
-rubric
-rubs
-ruby
-ruck
-rucks
-rucksack
-rucksacks
-ruction
-ructions
-rudder
-rudderless
-rudders
-ruddiness
-ruddy
-rude
-rudely
-rudeness
-ruder
-rudest
-rudimentary
-rudiments
-rue
-rueful
-ruefully
-ruefulness
-rues
-ruff
-ruffian
-ruffians
-ruffle
-ruffled
-ruffles
-ruffling
-ruffs
-rug
-rugby
-rugged
-ruggedly
-ruggedness
-rugs
-ruin
-ruination
-ruinations
-ruined
-ruiner
-ruining
-ruinous
-ruinously
-ruins
-rule
-rulebook
-rulebooks
-ruled
-ruler
-rulers
-rules
-ruling
-rulings
-rum
-rumania
-rumba
-rumbas
-rumble
-rumbled
-rumbles
-rumbling
-rumblings
-rumbustious
-rumen
-ruminant
-ruminants
-ruminate
-ruminated
-ruminating
-rumination
-ruminations
-ruminative
-ruminatively
-rummage
-rummaged
-rummages
-rummaging
-rummy
-rumour
-rumoured
-rumours
-rump
-rumple
-rumpled
-rumpling
-rumps
-rumpus
-rumpuses
-run
-runaway
-rundown
-rune
-runes
-rung
-rungs
-runnable
-runner
-runners
-runnersup
-runnerup
-runnier
-runniest
-running
-runny
-runofthemill
-runs
-runt
-runts
-runway
-runways
-rupee
-rupees
-rupert
-rupture
-ruptured
-ruptures
-rupturing
-rural
-ruralist
-rurally
-ruse
-rush
-rushed
-rushes
-rushhour
-rushier
-rushing
-rusk
-rusks
-russet
-russia
-russian
-rust
-rusted
-rustic
-rustically
-rusticate
-rusticated
-rusticity
-rustics
-rustier
-rustiest
-rustiness
-rusting
-rustle
-rustled
-rustler
-rustlers
-rustles
-rustling
-rustproof
-rusts
-rusty
-rut
-ruth
-ruthless
-ruthlessly
-ruthlessness
-ruts
-rutted
-rwanda
-rye
-sabbat
-sabbath
-sabbaths
-sabbatical
-sabbaticals
-saber
-sable
-sables
-sabotage
-sabotaged
-sabotages
-sabotaging
-saboteur
-saboteurs
-sabra
-sabras
-sabre
-sabres
-sabretoothed
-sac
-saccharides
-saccharin
-saccharine
-sacerdotal
-sachet
-sachets
-sack
-sackcloth
-sacked
-sackful
-sackfuls
-sacking
-sacks
-sacral
-sacrament
-sacramental
-sacraments
-sacred
-sacredly
-sacredness
-sacrifice
-sacrificed
-sacrifices
-sacrificial
-sacrificing
-sacrilege
-sacrilegious
-sacristy
-sacrosanct
-sacrum
-sacs
-sad
-sadden
-saddened
-saddening
-saddens
-sadder
-saddest
-saddle
-saddlebag
-saddlebags
-saddled
-saddler
-saddlers
-saddles
-saddling
-sadism
-sadist
-sadistic
-sadistically
-sadists
-sadly
-sadness
-sadomasochism
-sadomasochistic
-sadsack
-safari
-safaris
-safe
-safeguard
-safeguarded
-safeguarding
-safeguards
-safely
-safeness
-safer
-safes
-safest
-safeties
-safety
-saffron
-sag
-saga
-sagacious
-sagaciously
-sagacity
-sagas
-sage
-sagely
-sages
-sagest
-sagged
-sagging
-sago
-sags
-sahara
-sahib
-said
-saigon
-sail
-sailcloth
-sailed
-sailer
-sailing
-sailings
-sailmaker
-sailor
-sailors
-sails
-saint
-sainted
-sainthood
-saintlier
-saintliest
-saintliness
-saintly
-saints
-saipan
-sake
-sakes
-saki
-salaam
-salacious
-salad
-salads
-salamander
-salamanders
-salami
-salamis
-salaried
-salaries
-salary
-sale
-saleability
-saleable
-salem
-sales
-salesgirl
-salesman
-salesmanship
-salesmen
-salespeople
-salesperson
-saleswoman
-salicylic
-salience
-salient
-saline
-salinity
-saliva
-salivary
-salivas
-salivate
-salivating
-salivation
-salivations
-sallied
-sallies
-sallow
-sally
-sallying
-salmon
-salmonella
-salmons
-salome
-salon
-salons
-saloon
-saloons
-salsa
-salt
-salted
-saltier
-saltiest
-saltiness
-saltpetre
-salts
-saltwater
-salty
-salubrious
-salubrity
-salutary
-salutation
-salutations
-salute
-saluted
-salutes
-saluting
-salvage
-salvageable
-salvaged
-salvager
-salvages
-salvaging
-salvation
-salve
-salved
-salver
-salvers
-salving
-salvo
-sam
-samba
-sambas
-same
-sameness
-samizdat
-samoa
-samosas
-samovar
-sampan
-sample
-sampled
-sampler
-samplers
-samples
-sampling
-samplings
-samurai
-san
-sanatorium
-sanctification
-sanctified
-sanctifies
-sanctify
-sanctifying
-sanctimonious
-sanction
-sanctioned
-sanctioning
-sanctions
-sanctity
-sanctuaries
-sanctuary
-sanctum
-sand
-sandal
-sandalled
-sandals
-sandalwood
-sandbag
-sandbagged
-sandbags
-sandbank
-sandbanks
-sandcastle
-sandcastles
-sanddune
-sanded
-sander
-sandier
-sandiest
-sanding
-sandman
-sandpaper
-sandpapering
-sandpiper
-sandpipers
-sandpit
-sands
-sandstone
-sandstones
-sandwich
-sandwiched
-sandwiches
-sandwiching
-sandy
-sane
-sanely
-saner
-sanest
-sang
-sanguine
-sanitary
-sanitation
-sanitise
-sanitised
-sanitiser
-sanitisers
-sanity
-sank
-sanserif
-sanskrit
-santiago
-sap
-sapient
-sapling
-saplings
-sapped
-sapper
-sappers
-sapphire
-sapphires
-sapping
-saps
-sarcasm
-sarcasms
-sarcastic
-sarcastically
-sarcoma
-sarcophagi
-sarcophagus
-sardine
-sardines
-sardinia
-sardonic
-sardonically
-sarge
-sari
-saris
-sarong
-sartorial
-sartorially
-sash
-sashes
-sat
-satan
-satanic
-satanically
-satanism
-satchel
-satchels
-sated
-satellite
-satellites
-satiate
-satiated
-satiation
-satin
-sating
-satins
-satinwood
-satiny
-satire
-satires
-satiric
-satirical
-satirically
-satirise
-satirised
-satirises
-satirising
-satirist
-satirists
-satisfaction
-satisfactions
-satisfactorily
-satisfactory
-satisfiable
-satisfied
-satisfies
-satisfy
-satisfying
-satisfyingly
-satrap
-satraps
-satsumas
-saturate
-saturated
-saturates
-saturating
-saturation
-saturday
-saturn
-saturnalia
-saturnine
-satyr
-satyric
-satyrs
-sauce
-saucepan
-saucepans
-saucer
-saucers
-sauces
-saucier
-sauciest
-saucily
-sauciness
-saucy
-saudi
-saudis
-sauerkraut
-sauna
-saunas
-saunter
-sauntered
-sauntering
-saunters
-sausage
-sausages
-saute
-savage
-savaged
-savagely
-savagery
-savages
-savaging
-savanna
-savannah
-savant
-savants
-save
-saved
-saveloy
-saver
-savers
-saves
-saving
-savings
-saviour
-saviours
-savour
-savoured
-savouring
-savours
-savoury
-savvy
-saw
-sawdust
-sawed
-sawing
-sawmill
-sawmills
-sawn
-saws
-sawtooth
-sawyer
-sawyers
-saxon
-saxons
-saxony
-saxophone
-saxophones
-saxophonist
-say
-saying
-sayings
-says
-scab
-scabbard
-scabbards
-scabbed
-scabby
-scabies
-scabs
-scaffold
-scaffolding
-scaffolds
-scalability
-scalable
-scalar
-scalars
-scald
-scalded
-scalding
-scalds
-scale
-scaled
-scalene
-scales
-scaling
-scallop
-scalloped
-scallops
-scalp
-scalped
-scalpel
-scalpels
-scalping
-scalps
-scaly
-scam
-scamp
-scamped
-scamper
-scampered
-scampering
-scampi
-scams
-scan
-scandal
-scandalise
-scandalised
-scandalous
-scandalously
-scandals
-scanned
-scanner
-scanners
-scanning
-scans
-scansion
-scant
-scantier
-scantiest
-scantily
-scantiness
-scanty
-scape
-scapegoat
-scapegoats
-scapula
-scar
-scarab
-scarce
-scarcely
-scarceness
-scarcer
-scarcest
-scarcities
-scarcity
-scare
-scarecrow
-scarecrows
-scared
-scaremonger
-scaremongering
-scares
-scarf
-scarfs
-scarier
-scariest
-scarified
-scarify
-scarifying
-scarily
-scaring
-scarlet
-scarlets
-scarp
-scarred
-scarring
-scars
-scarves
-scary
-scat
-scathe
-scathed
-scathing
-scathingly
-scatological
-scatter
-scattered
-scatterer
-scatterers
-scattering
-scatterings
-scatters
-scavenge
-scavenged
-scavenger
-scavengers
-scavenging
-scenario
-scene
-scenery
-scenes
-scenic
-scenically
-scent
-scented
-scenting
-scentless
-scents
-sceptic
-sceptical
-sceptically
-scepticism
-sceptics
-sceptre
-sceptred
-sceptres
-schedule
-scheduled
-scheduler
-schedulers
-schedules
-scheduling
-schema
-schemas
-schemata
-schematic
-schematically
-schematics
-scheme
-schemed
-schemer
-schemes
-scheming
-scherzi
-scherzo
-schism
-schismatic
-schismatics
-schisms
-schist
-schistosomiasis
-schists
-schizoid
-schizophrenia
-schizophrenic
-schizophrenically
-schizophrenics
-schmalz
-schnapps
-scholar
-scholarly
-scholars
-scholarship
-scholarships
-scholastic
-scholasticism
-school
-schoolboy
-schoolboys
-schoolchild
-schoolchildren
-schooldays
-schooled
-schoolgirl
-schoolgirls
-schoolhouse
-schooling
-schoolmaster
-schoolmasters
-schoolmates
-schoolmistress
-schoolroom
-schools
-schoolteacher
-schoolteachers
-schooner
-schooners
-schwa
-schwas
-sciatica
-science
-sciences
-scientific
-scientifically
-scientist
-scientists
-scifi
-scimitar
-scimitars
-scintigraphy
-scintillate
-scintillated
-scintillating
-scintillation
-scintillations
-scintillator
-scintillators
-scissor
-scissored
-scissors
-sclerosis
-scoff
-scoffed
-scoffing
-scold
-scolded
-scolder
-scolding
-scolds
-scone
-scones
-scoop
-scooped
-scooper
-scoopful
-scooping
-scoops
-scoot
-scooter
-scooters
-scooting
-scoots
-scope
-scopes
-scorch
-scorched
-scorcher
-scorches
-scorching
-score
-scoreboard
-scoreboards
-scorecard
-scorecards
-scored
-scoreless
-scoreline
-scorer
-scorers
-scores
-scoring
-scorn
-scorned
-scornful
-scornfully
-scorning
-scorns
-scorpion
-scorpions
-scot
-scotch
-scotched
-scotches
-scotfree
-scotland
-scots
-scotsman
-scottish
-scoundrel
-scoundrels
-scour
-scoured
-scourge
-scourged
-scourges
-scourging
-scouring
-scours
-scout
-scouted
-scouting
-scoutmaster
-scoutmasters
-scouts
-scowl
-scowled
-scowling
-scowls
-scrabble
-scrabbled
-scrabbling
-scram
-scramble
-scrambled
-scrambler
-scramblers
-scrambles
-scrambling
-scrams
-scrap
-scrapbook
-scrapbooks
-scrape
-scraped
-scraper
-scrapers
-scrapes
-scrapie
-scraping
-scrapings
-scrapped
-scrappier
-scrappiest
-scrapping
-scrappy
-scraps
-scrapyard
-scrapyards
-scratch
-scratched
-scratches
-scratchier
-scratchiest
-scratchiness
-scratching
-scratchings
-scratchy
-scrawl
-scrawled
-scrawling
-scrawls
-scrawnier
-scrawniest
-scrawny
-scream
-screamed
-screamer
-screamers
-screaming
-screamingly
-screams
-scree
-screech
-screeched
-screeches
-screechier
-screechiest
-screeching
-screechy
-screed
-screeds
-screen
-screened
-screening
-screenings
-screenplay
-screenplays
-screens
-screenwriter
-screw
-screwdriver
-screwdrivers
-screwed
-screwing
-screws
-screwy
-scribal
-scribble
-scribbled
-scribbler
-scribblers
-scribbles
-scribbling
-scribblings
-scribe
-scribed
-scribes
-scribing
-scrimped
-script
-scripted
-scripting
-scriptorium
-scripts
-scriptural
-scripture
-scriptures
-scriptwriter
-scriptwriters
-scriptwriting
-scroll
-scrollable
-scrolled
-scrolling
-scrolls
-scrooge
-scrooges
-scrotum
-scrub
-scrubbed
-scrubber
-scrubbers
-scrubbing
-scrubby
-scrubland
-scrubs
-scruff
-scruffier
-scruffy
-scrum
-scrumhalf
-scrummage
-scrummaging
-scrums
-scrunched
-scruple
-scruples
-scrupulous
-scrupulously
-scrupulousness
-scrutineers
-scrutinies
-scrutinise
-scrutinised
-scrutinises
-scrutinising
-scrutiny
-scuba
-scubas
-scud
-scudded
-scudding
-scuds
-scuff
-scuffed
-scuffing
-scuffle
-scuffled
-scuffles
-scuffling
-scull
-sculled
-sculler
-sculleries
-scullery
-sculling
-sculls
-sculpt
-sculpted
-sculpting
-sculptor
-sculptors
-sculptress
-sculptural
-sculpture
-sculptured
-sculptures
-scum
-scupper
-scuppered
-scurried
-scurries
-scurrilous
-scurry
-scurrying
-scurryings
-scurvy
-scuttle
-scuttled
-scuttles
-scuttling
-scythe
-scythed
-scythes
-scything
-sea
-seabed
-seabird
-seabirds
-seaboard
-seaborne
-seacow
-seacows
-seafarer
-seafarers
-seafaring
-seafood
-seafront
-seagod
-seagoing
-seagreen
-seagull
-seagulls
-seal
-sealant
-sealants
-sealed
-sealer
-sealers
-sealing
-sealion
-seals
-seam
-seamail
-seaman
-seamanship
-seamed
-seamen
-seamier
-seamless
-seamlessly
-seams
-seamstress
-seamstresses
-seamy
-seance
-seances
-seaplane
-seaplanes
-seaport
-seaports
-sear
-search
-searched
-searcher
-searchers
-searches
-searching
-searchingly
-searchlight
-searchlights
-seared
-searing
-sears
-seas
-seascape
-seascapes
-seashells
-seashore
-seashores
-seasick
-seasickness
-seaside
-season
-seasonable
-seasonably
-seasonal
-seasonality
-seasonally
-seasoned
-seasoner
-seasoning
-seasons
-seat
-seated
-seating
-seatings
-seats
-seattle
-seaward
-seawards
-seawater
-seaweed
-seaweeds
-seaworthy
-sebaceous
-sec
-secant
-secateurs
-secede
-seceded
-secedes
-seceding
-secession
-secessionist
-secessionists
-secessions
-seclude
-secluded
-seclusion
-second
-secondaries
-secondarily
-secondary
-secondbest
-secondclass
-seconded
-seconder
-seconders
-secondhand
-seconding
-secondly
-secondment
-secondments
-secondrate
-seconds
-secrecy
-secret
-secretarial
-secretariat
-secretariats
-secretaries
-secretary
-secretaryship
-secrete
-secreted
-secretes
-secreting
-secretion
-secretions
-secretive
-secretively
-secretiveness
-secretly
-secretory
-secrets
-sect
-sectarian
-sectarianism
-section
-sectional
-sectioned
-sectioning
-sections
-sector
-sectoral
-sectored
-sectors
-sects
-secular
-secularisation
-secularised
-secularism
-secularist
-secularists
-secure
-secured
-securely
-securer
-secures
-securest
-securing
-securities
-security
-sedan
-sedate
-sedated
-sedately
-sedateness
-sedater
-sedates
-sedating
-sedation
-sedative
-sedatives
-sedentary
-sedge
-sedges
-sediment
-sedimentary
-sedimentation
-sediments
-sedition
-seditious
-seduce
-seduced
-seducer
-seducers
-seduces
-seducing
-seduction
-seductions
-seductive
-seductively
-seductiveness
-sedulously
-see
-seeable
-seed
-seedbed
-seeded
-seeder
-seedier
-seediest
-seediness
-seeding
-seedless
-seedling
-seedlings
-seeds
-seedy
-seeing
-seeings
-seek
-seeker
-seekers
-seeking
-seeks
-seem
-seemed
-seeming
-seemingly
-seemlier
-seemliest
-seemly
-seems
-seen
-seep
-seepage
-seeped
-seeping
-seeps
-seer
-seers
-sees
-seesaw
-seesaws
-seethe
-seethed
-seethes
-seething
-seethrough
-segment
-segmental
-segmentation
-segmented
-segmenting
-segments
-segregate
-segregated
-segregates
-segregating
-segregation
-seine
-seisin
-seismic
-seismogram
-seismograph
-seismological
-seismologist
-seismologists
-seismology
-seismometer
-seismometers
-seize
-seized
-seizer
-seizes
-seizing
-seizure
-seizures
-seldom
-select
-selectable
-selected
-selectee
-selecting
-selection
-selections
-selective
-selectively
-selectivity
-selector
-selectors
-selects
-selenium
-selenology
-self
-selfcentred
-selfcentredness
-selfconfidence
-selfconfident
-selfconscious
-selfconsciously
-selfconsciousness
-selfcontrol
-selfcontrolled
-selfdefence
-selfdestruct
-selfdestructed
-selfdestructing
-selfdestruction
-selfdestructive
-selfdestructs
-selfdiscipline
-selfemployed
-selfesteem
-selfevident
-selfgoverning
-selfgovernment
-selfinflicted
-selfinterest
-selfish
-selfishly
-selfishness
-selfless
-selflessly
-selfmade
-selfpity
-selfportrait
-selfportraits
-selfrespect
-selfrespecting
-selfrestraint
-selfrighteous
-selfrighteously
-selfrighteousness
-selfsacrifice
-selfsacrificing
-selfsame
-selfsupporting
-selftaught
-sell
-sellable
-seller
-sellers
-selling
-sells
-selves
-semantic
-semantically
-semantics
-semaphore
-semaphores
-semaphoring
-semblance
-semblances
-semen
-semester
-semesters
-semi
-semicircle
-semicircular
-semicolon
-semicolons
-semiconducting
-semiconductor
-semiconductors
-semiconscious
-semidetached
-semifinal
-semifinalist
-semifinalists
-semifinals
-seminar
-seminaries
-seminars
-seminary
-semite
-semites
-semitic
-semitics
-sen
-senate
-senates
-senator
-senatorial
-senators
-send
-sender
-senders
-sending
-sends
-senegal
-senhor
-senhors
-senile
-senility
-senior
-seniority
-seniors
-senora
-senoritas
-sensation
-sensational
-sensationalised
-sensationalism
-sensationalist
-sensationalistic
-sensationally
-sensations
-sense
-sensed
-senseless
-senselessly
-senselessness
-senses
-sensibilities
-sensibility
-sensible
-sensibleness
-sensibly
-sensing
-sensings
-sensitisation
-sensitised
-sensitisers
-sensitive
-sensitively
-sensitiveness
-sensitivities
-sensitivity
-sensor
-sensors
-sensory
-sensual
-sensuality
-sensually
-sensuous
-sensuously
-sensuousness
-sent
-sentence
-sentenced
-sentences
-sentencing
-sentential
-sententious
-sententiously
-sentience
-sentient
-sentiment
-sentimental
-sentimentalised
-sentimentalism
-sentimentalist
-sentimentality
-sentimentally
-sentiments
-sentinel
-sentinels
-sentries
-sentry
-seoul
-separability
-separable
-separate
-separated
-separately
-separateness
-separates
-separating
-separation
-separations
-separatism
-separatist
-separatists
-separator
-separators
-sepia
-september
-septet
-septets
-septic
-septicaemia
-sepulchral
-sepulchre
-sepulchres
-sequel
-sequels
-sequence
-sequenced
-sequencer
-sequencers
-sequences
-sequencing
-sequent
-sequential
-sequentially
-sequestered
-sequestrated
-sequestration
-sequin
-sequinned
-sequins
-sequoia
-seraglio
-serai
-seraphic
-seraphically
-seraphim
-seraphs
-serenade
-serenader
-serenades
-serenading
-serenata
-serendipitous
-serendipitously
-serendipity
-serene
-serenely
-serener
-serenest
-serenity
-serf
-serfdom
-serfhood
-serfs
-serge
-sergeant
-sergeants
-serial
-serialisation
-serialisations
-serialise
-serialised
-serialising
-serially
-serials
-series
-serif
-serifed
-serifs
-serious
-seriously
-seriousness
-sermon
-sermons
-serological
-serology
-seronegative
-serotonin
-serpent
-serpentine
-serpents
-serrate
-serrated
-serried
-serum
-serums
-servant
-servants
-serve
-served
-server
-servers
-serves
-service
-serviceability
-serviceable
-serviced
-serviceman
-servicemen
-services
-servicing
-serviette
-servile
-servilely
-servility
-serving
-servings
-servitude
-sesame
-sesotho
-sessile
-session
-sessions
-set
-setback
-setbacks
-seth
-sets
-setswana
-settee
-settees
-setter
-setters
-setting
-settings
-settle
-settled
-settlement
-settlements
-settler
-settlers
-settles
-settling
-setts
-setup
-seven
-sevenfold
-sevenpence
-sevens
-seventeen
-seventeenth
-seventh
-seventies
-seventieth
-seventy
-sever
-severable
-several
-severally
-severance
-severe
-severed
-severely
-severer
-severest
-severing
-severity
-severs
-sew
-sewage
-sewed
-sewer
-sewerage
-sewerrat
-sewers
-sewing
-sewings
-sewn
-sews
-sex
-sexed
-sexes
-sexier
-sexiest
-sexily
-sexiness
-sexing
-sexism
-sexist
-sexists
-sexless
-sexologists
-sexology
-sextant
-sextants
-sextet
-sextets
-sexton
-sextons
-sextuplet
-sextuplets
-sexual
-sexualities
-sexuality
-sexually
-sexy
-shabbier
-shabbiest
-shabbily
-shabbiness
-shabby
-shack
-shackle
-shackled
-shackles
-shacks
-shade
-shaded
-shadeless
-shades
-shadier
-shadiest
-shadily
-shading
-shadings
-shadow
-shadowed
-shadowing
-shadowless
-shadows
-shadowy
-shady
-shaft
-shafted
-shafting
-shafts
-shag
-shagged
-shaggiest
-shaggy
-shags
-shah
-shahs
-shakable
-shake
-shakeable
-shakedown
-shaken
-shaker
-shakers
-shakes
-shakeup
-shakeups
-shakier
-shakiest
-shakily
-shaking
-shaky
-shale
-shall
-shallot
-shallots
-shallow
-shallower
-shallowest
-shallowly
-shallowness
-shallows
-sham
-shaman
-shamanic
-shamanism
-shamanistic
-shamans
-shamble
-shambled
-shambles
-shambling
-shame
-shamed
-shamefaced
-shamefacedly
-shameful
-shamefully
-shameless
-shamelessly
-shamelessness
-shames
-shaming
-shammed
-shamming
-shampoo
-shampooed
-shampooing
-shampoos
-shamrock
-shams
-shandy
-shank
-shanks
-shanties
-shanty
-shape
-shaped
-shapeless
-shapelier
-shapeliest
-shapely
-shaper
-shapers
-shapes
-shaping
-sharable
-shard
-shards
-share
-shareable
-shared
-shareholder
-shareholders
-shareholding
-shareholdings
-sharer
-shares
-shareware
-sharing
-shark
-sharks
-sharp
-sharpen
-sharpened
-sharpener
-sharpeners
-sharpening
-sharpens
-sharper
-sharpest
-sharply
-sharpness
-sharps
-shatter
-shattered
-shattering
-shatteringly
-shatterproof
-shatters
-shave
-shaved
-shaven
-shaver
-shavers
-shaves
-shaving
-shavings
-shaw
-shawl
-shawls
-she
-sheaf
-shear
-sheared
-shearer
-shearers
-shearing
-shears
-shearwater
-shearwaters
-sheath
-sheathe
-sheathed
-sheathing
-sheaths
-sheaves
-shed
-shedding
-sheds
-sheen
-sheep
-sheepdog
-sheepdogs
-sheepish
-sheepishly
-sheepishness
-sheepskin
-sheepskins
-sheer
-sheered
-sheerest
-sheerness
-sheet
-sheeted
-sheeting
-sheets
-sheik
-sheikh
-sheikhs
-sheiks
-shekel
-shekels
-shelf
-shell
-shellac
-shelled
-shellfire
-shellfish
-shelling
-shells
-shelter
-sheltered
-sheltering
-shelters
-shelve
-shelved
-shelves
-shelving
-shepherd
-shepherded
-shepherdess
-shepherding
-shepherds
-sherbet
-sherds
-sheriff
-sheriffs
-sherlock
-sherries
-sherry
-shetland
-shibboleth
-shibboleths
-shied
-shield
-shielded
-shielding
-shields
-shielings
-shies
-shift
-shifted
-shifter
-shifters
-shiftier
-shiftily
-shiftiness
-shifting
-shiftless
-shifts
-shifty
-shilling
-shimmer
-shimmered
-shimmering
-shimmers
-shin
-shinbone
-shindig
-shine
-shined
-shiner
-shines
-shingle
-shingles
-shinier
-shiniest
-shining
-shinned
-shinning
-shins
-shiny
-ship
-shipboard
-shipborne
-shipbuilder
-shipbuilders
-shipbuilding
-shipload
-shiploads
-shipmate
-shipmates
-shipment
-shipments
-shipowner
-shipowners
-shippable
-shipped
-shipping
-ships
-shipshape
-shipwreck
-shipwrecked
-shipwrecks
-shipwright
-shipwrights
-shipyard
-shipyards
-shire
-shires
-shirk
-shirked
-shirking
-shirt
-shirtless
-shirts
-shirtsleeves
-shiver
-shivered
-shivering
-shiveringly
-shivers
-shivery
-shoal
-shoals
-shock
-shocked
-shocker
-shockers
-shocking
-shockingly
-shocks
-shod
-shoddier
-shoddiest
-shoddily
-shoddiness
-shoddy
-shoe
-shoebox
-shoed
-shoehorn
-shoeing
-shoelace
-shoelaces
-shoeless
-shoemaker
-shoemakers
-shoes
-shoestring
-shoestrings
-shogun
-shoguns
-shone
-shoo
-shooed
-shooing
-shook
-shoot
-shooter
-shooters
-shooting
-shootings
-shoots
-shop
-shopfront
-shopfronts
-shopkeeper
-shopkeepers
-shopkeeping
-shoplift
-shoplifted
-shoplifter
-shoplifters
-shoplifting
-shopped
-shopper
-shoppers
-shopping
-shops
-shore
-shored
-shoreline
-shorelines
-shores
-shoreward
-shorewards
-shoring
-shorn
-short
-shortage
-shortages
-shortbread
-shortcircuit
-shortcircuited
-shortcircuiting
-shortcoming
-shortcomings
-shortcrust
-shortcut
-shortcuts
-shorted
-shorten
-shortened
-shortening
-shortens
-shorter
-shortest
-shortfall
-shortfalls
-shorthand
-shorting
-shortish
-shortlist
-shortlisted
-shortlisting
-shortlived
-shortly
-shortness
-shorts
-shortsighted
-shortsightedly
-shortsightedness
-shortstaffed
-shorttempered
-shortterm
-shortwinded
-shorty
-shot
-shotgun
-shotguns
-shots
-should
-shoulder
-shouldered
-shouldering
-shoulders
-shout
-shouted
-shouter
-shouters
-shouting
-shouts
-shove
-shoved
-shovel
-shovelful
-shovelled
-shoveller
-shovelling
-shovels
-shoves
-shoving
-show
-showcase
-showcases
-showcasing
-showdown
-showed
-shower
-showered
-showering
-showers
-showery
-showgirl
-showground
-showier
-showiest
-showing
-showings
-showjumpers
-showman
-showmanship
-showmen
-shown
-showoff
-showpiece
-showpieces
-showplace
-showroom
-showrooms
-shows
-showy
-shrank
-shrapnel
-shred
-shredded
-shredder
-shredders
-shredding
-shreds
-shrew
-shrewd
-shrewder
-shrewdest
-shrewdly
-shrewdness
-shrews
-shriek
-shrieked
-shrieker
-shriekers
-shrieking
-shrieks
-shrift
-shrill
-shrilled
-shrillest
-shrillness
-shrills
-shrilly
-shrimp
-shrimps
-shrine
-shrines
-shrink
-shrinkable
-shrinkage
-shrinking
-shrinkingly
-shrinks
-shrivel
-shrivelled
-shrivelling
-shrivels
-shroud
-shrouded
-shrouding
-shrouds
-shrub
-shrubberies
-shrubbery
-shrubby
-shrubs
-shrug
-shrugged
-shrugging
-shrugs
-shrunk
-shrunken
-shudder
-shuddered
-shuddering
-shudders
-shuffle
-shuffled
-shuffler
-shufflers
-shuffles
-shuffling
-shun
-shunned
-shunning
-shuns
-shunt
-shunted
-shunter
-shunters
-shunting
-shunts
-shushed
-shut
-shutdown
-shutdowns
-shuts
-shutter
-shuttered
-shuttering
-shutters
-shutting
-shuttle
-shuttlecock
-shuttlecocks
-shuttled
-shuttles
-shuttling
-shutup
-shy
-shyer
-shyest
-shying
-shyly
-shyness
-siam
-siamese
-siberia
-siberian
-sibilance
-sibilancy
-sibilant
-sibling
-siblings
-sibyl
-sic
-sicilian
-sicily
-sick
-sickbay
-sickbed
-sicken
-sickened
-sickening
-sickeningly
-sickens
-sicker
-sickest
-sickle
-sickles
-sickliest
-sickly
-sickness
-sicknesses
-sickroom
-side
-sideband
-sidebands
-sideboard
-sideboards
-sideburns
-sidecar
-sided
-sidekick
-sidelight
-sidelights
-sideline
-sidelines
-sidelong
-sider
-sidereal
-sides
-sideshow
-sideshows
-sidestep
-sidestepped
-sidestepping
-sidesteps
-sideswipes
-sidetrack
-sidetracked
-sidetracking
-sidewalk
-sidewards
-sideways
-sidewinders
-siding
-sidings
-sidle
-sidled
-sidling
-siege
-sieges
-sienna
-sierra
-siesta
-siestas
-sieve
-sieved
-sieves
-sieving
-sift
-sifted
-sifter
-sifters
-sifting
-siftings
-sifts
-sigh
-sighed
-sighing
-sighs
-sight
-sighted
-sightedness
-sighting
-sightings
-sightless
-sightlessly
-sightly
-sights
-sightsee
-sightseeing
-sightseers
-sigma
-sigmoid
-sign
-signal
-signalled
-signaller
-signallers
-signalling
-signally
-signalman
-signalmen
-signals
-signatories
-signatory
-signature
-signatures
-signboards
-signed
-signer
-signers
-signet
-significance
-significances
-significant
-significantly
-signification
-significations
-signified
-signifier
-signifies
-signify
-signifying
-signing
-signings
-signor
-signora
-signors
-signpost
-signposted
-signposting
-signposts
-signs
-signwriter
-silage
-silence
-silenced
-silencer
-silencers
-silences
-silencing
-silent
-silently
-silhouette
-silhouetted
-silhouettes
-silica
-silicate
-silicates
-silicon
-silicone
-silicosis
-silk
-silken
-silkier
-silkiest
-silkily
-silkiness
-silklike
-silks
-silkworm
-silkworms
-silky
-sillier
-silliest
-silliness
-silly
-silo
-silt
-silted
-silting
-silts
-siltstone
-silty
-silver
-silvered
-silvering
-silvers
-silversmith
-silversmiths
-silverware
-silvery
-simeon
-similar
-similarities
-similarity
-similarly
-simile
-similes
-similitude
-simmer
-simmered
-simmering
-simmers
-simper
-simpered
-simpering
-simpers
-simple
-simpleminded
-simpler
-simplest
-simpleton
-simpletons
-simplex
-simplexes
-simplicities
-simplicity
-simplification
-simplifications
-simplified
-simplifier
-simplifies
-simplify
-simplifying
-simplism
-simplistic
-simplistically
-simply
-simulacrum
-simulate
-simulated
-simulates
-simulating
-simulation
-simulations
-simulator
-simulators
-simulcasts
-simultaneity
-simultaneous
-simultaneously
-sin
-sinai
-since
-sincere
-sincerely
-sincerest
-sincerity
-sine
-sinecure
-sinecures
-sinecurist
-sines
-sinew
-sinews
-sinewy
-sinful
-sinfully
-sinfulness
-sing
-singable
-singalong
-singe
-singed
-singeing
-singer
-singers
-singes
-singing
-single
-singlehanded
-singlehandedly
-singleminded
-singlemindedly
-singlemindedness
-singleness
-singles
-singly
-sings
-singsong
-singular
-singularisation
-singularities
-singularity
-singularly
-singulars
-sinister
-sinisterly
-sinistral
-sink
-sinkable
-sinker
-sinkers
-sinking
-sinks
-sinless
-sinned
-sinner
-sinners
-sinning
-sins
-sinter
-sinters
-sinuous
-sinuously
-sinus
-sinuses
-sinusitis
-sinusoid
-sinusoidal
-sinusoidally
-sip
-siphon
-siphoned
-siphoning
-siphons
-sipped
-sipper
-sippers
-sipping
-sips
-sir
-sire
-sired
-siren
-sirens
-sires
-sirius
-sirloin
-sirloins
-sirs
-sis
-sisal
-sissies
-sissy
-sister
-sisterhood
-sisterinlaw
-sisterly
-sisters
-sistersinlaw
-sit
-sitar
-sitcom
-sitcoms
-site
-sited
-sites
-siting
-sitings
-sits
-sitter
-sitters
-sitting
-sittings
-situate
-situated
-situating
-situation
-situational
-situationally
-situationist
-situations
-six
-sixes
-sixfold
-sixpence
-sixteen
-sixteenth
-sixth
-sixths
-sixties
-sixtieth
-sixty
-size
-sizeable
-sized
-sizes
-sizing
-sizzle
-sizzled
-sizzles
-sizzling
-sjambok
-skate
-skateboard
-skateboards
-skated
-skater
-skaters
-skates
-skating
-skein
-skeletal
-skeleton
-skeletons
-skeptic
-skerries
-sketch
-sketchbook
-sketchbooks
-sketched
-sketcher
-sketches
-sketchier
-sketchiest
-sketchily
-sketching
-sketchpad
-sketchy
-skew
-skewed
-skewer
-skewered
-skewers
-skewness
-skews
-ski
-skid
-skidded
-skidding
-skids
-skied
-skier
-skiers
-skies
-skiing
-skilful
-skilfully
-skill
-skilled
-skillet
-skillful
-skills
-skim
-skimmed
-skimmer
-skimming
-skimp
-skimped
-skimping
-skimpy
-skims
-skin
-skincare
-skindeep
-skinflint
-skinhead
-skinheads
-skinless
-skinned
-skinner
-skinners
-skinnier
-skinniest
-skinning
-skinny
-skins
-skintight
-skip
-skipped
-skipper
-skippered
-skippering
-skippers
-skipping
-skips
-skirl
-skirmish
-skirmishes
-skirmishing
-skirt
-skirted
-skirting
-skirts
-skis
-skit
-skits
-skittish
-skittishly
-skittishness
-skittle
-skittles
-skua
-skuas
-skulduggery
-skulk
-skulked
-skulking
-skulks
-skull
-skullcap
-skullduggery
-skulls
-skunk
-skunks
-sky
-skydive
-skydived
-skydiver
-skydivers
-skydives
-skydiving
-skyhigh
-skylark
-skylarks
-skylight
-skylights
-skyline
-skylines
-skyscape
-skyscraper
-skyscrapers
-skyward
-skywards
-slab
-slabs
-slack
-slacked
-slacken
-slackened
-slackening
-slackens
-slacker
-slackers
-slackest
-slacking
-slackly
-slackness
-slacks
-slag
-slags
-slain
-slake
-slaked
-slalom
-slaloms
-slam
-slammed
-slamming
-slams
-slander
-slandered
-slanderer
-slanderers
-slandering
-slanderous
-slanders
-slang
-slanging
-slant
-slanted
-slanting
-slants
-slantwise
-slap
-slapdash
-slapped
-slapper
-slapping
-slaps
-slapstick
-slash
-slashed
-slasher
-slashes
-slashing
-slat
-slate
-slated
-slater
-slaters
-slates
-slating
-slats
-slatted
-slaughter
-slaughtered
-slaughterer
-slaughterhouse
-slaughterhouses
-slaughtering
-slaughterings
-slaughters
-slav
-slave
-slaved
-slavedriver
-slavedrivers
-slaver
-slavered
-slavering
-slavers
-slavery
-slaves
-slavic
-slaving
-slavish
-slavishly
-slavs
-slay
-slayed
-slayer
-slayers
-slaying
-slays
-sleaze
-sleazier
-sleaziest
-sleazy
-sled
-sledding
-sledge
-sledgehammer
-sledgehammers
-sledges
-sledging
-sleds
-sleek
-sleeker
-sleekly
-sleekness
-sleeks
-sleep
-sleeper
-sleepers
-sleepier
-sleepiest
-sleepily
-sleepiness
-sleeping
-sleepless
-sleeplessness
-sleeps
-sleepwalk
-sleepwalker
-sleepwalking
-sleepwalks
-sleepy
-sleet
-sleets
-sleeve
-sleeved
-sleeveless
-sleeves
-sleigh
-sleighs
-sleight
-sleights
-slender
-slenderest
-slenderly
-slenderness
-slept
-sleuth
-sleuths
-slew
-slewed
-slewing
-slice
-sliced
-slicer
-slicers
-slices
-slicing
-slicings
-slick
-slicked
-slicker
-slickest
-slickly
-slickness
-slicks
-slid
-slide
-slided
-slider
-sliders
-slides
-sliding
-slight
-slighted
-slighter
-slightest
-slighting
-slightingly
-slightly
-slights
-slily
-slim
-slime
-slimes
-slimier
-slimiest
-slimline
-slimly
-slimmed
-slimmer
-slimmers
-slimmest
-slimming
-slimness
-slims
-slimy
-sling
-slinging
-slings
-slingshot
-slink
-slinking
-slinky
-slip
-slippage
-slipped
-slipper
-slipperiness
-slippers
-slippery
-slipping
-slips
-slipshod
-slipstream
-slipup
-slipway
-slit
-slither
-slithered
-slithering
-slithers
-slithery
-slits
-slitting
-sliver
-slivers
-slob
-slobber
-slobbering
-slobbers
-slobbery
-slobs
-slog
-slogan
-slogans
-slogged
-slogging
-slogs
-sloop
-slop
-slope
-sloped
-slopes
-sloping
-slopped
-sloppier
-sloppiest
-sloppily
-sloppiness
-slopping
-sloppy
-slops
-slosh
-sloshed
-sloshing
-slot
-sloth
-slothful
-sloths
-slots
-slotted
-slotting
-slouch
-slouched
-slouches
-slouching
-slough
-sloughed
-sloughing
-slovak
-slovenia
-slovenliness
-slovenly
-slow
-slowcoaches
-slowdown
-slowed
-slower
-slowest
-slowing
-slowish
-slowly
-slowness
-slowpoke
-slows
-sludge
-sludgy
-slug
-sluggard
-sluggards
-slugged
-slugging
-sluggish
-sluggishly
-sluggishness
-slugs
-sluice
-sluiced
-sluices
-sluicing
-slum
-slumber
-slumbered
-slumbering
-slumbers
-slumming
-slump
-slumped
-slumping
-slumps
-slums
-slung
-slunk
-slur
-slurp
-slurped
-slurping
-slurps
-slurred
-slurring
-slurry
-slurs
-slush
-slushed
-slushes
-slushier
-slushiest
-slushy
-slut
-sluts
-sly
-slyer
-slyly
-slyness
-smack
-smacked
-smacker
-smacking
-smacks
-small
-smaller
-smallest
-smallholder
-smallholders
-smallholding
-smallholdings
-smallish
-smallminded
-smallmindedness
-smallness
-smallpox
-smalls
-smallscale
-smalltalk
-smalltime
-smalltown
-smart
-smarted
-smarten
-smartened
-smartening
-smarter
-smartest
-smarting
-smartly
-smartness
-smarts
-smash
-smashed
-smasher
-smashes
-smashing
-smattering
-smatterings
-smear
-smeared
-smearing
-smears
-smegma
-smell
-smellable
-smelled
-smellier
-smelliest
-smelling
-smells
-smelly
-smelt
-smelted
-smelter
-smelters
-smelting
-smidgeon
-smile
-smiled
-smiler
-smilers
-smiles
-smiling
-smilingly
-smirk
-smirked
-smirking
-smirks
-smite
-smith
-smithereens
-smiths
-smithy
-smiting
-smitten
-smock
-smocks
-smog
-smoggy
-smogs
-smoke
-smoked
-smokeless
-smoker
-smokers
-smokes
-smokescreen
-smokestack
-smokestacks
-smokier
-smokiest
-smokiness
-smoking
-smoky
-smolder
-smooch
-smooth
-smoothed
-smoother
-smoothest
-smoothing
-smoothly
-smoothness
-smooths
-smoothtongued
-smote
-smother
-smothered
-smothering
-smothers
-smoulder
-smouldered
-smouldering
-smoulders
-smudge
-smudged
-smudges
-smudgier
-smudgiest
-smudging
-smudgy
-smug
-smuggle
-smuggled
-smuggler
-smugglers
-smuggles
-smuggling
-smugly
-smugness
-smut
-smuts
-smutty
-snack
-snacks
-snaffle
-snag
-snagged
-snagging
-snags
-snail
-snails
-snake
-snaked
-snakepit
-snakes
-snakeskin
-snaking
-snaky
-snap
-snapped
-snapper
-snappier
-snappily
-snapping
-snappy
-snaps
-snapshot
-snapshots
-snare
-snared
-snares
-snaring
-snarl
-snarled
-snarling
-snarls
-snatch
-snatched
-snatcher
-snatchers
-snatches
-snatching
-sneak
-sneaked
-sneakers
-sneakier
-sneakiest
-sneakily
-sneaking
-sneaks
-sneaky
-sneer
-sneered
-sneering
-sneeringly
-sneers
-sneeze
-sneezed
-sneezes
-sneezing
-snick
-snide
-sniff
-sniffed
-sniffer
-sniffers
-sniffing
-sniffle
-sniffles
-sniffling
-sniffly
-sniffs
-snifter
-snigger
-sniggered
-sniggering
-sniggers
-snip
-snipe
-sniper
-snipers
-snipes
-sniping
-snipped
-snippet
-snippets
-snipping
-snips
-snits
-snivel
-snivelling
-snob
-snobbery
-snobbish
-snobbishly
-snobbishness
-snobs
-snoek
-snooker
-snoop
-snooped
-snooper
-snoopers
-snooping
-snoops
-snoopy
-snooze
-snoozed
-snoozes
-snoozing
-snore
-snored
-snorer
-snorers
-snores
-snoring
-snorkel
-snorkelling
-snorkels
-snort
-snorted
-snorting
-snorts
-snotty
-snout
-snouts
-snow
-snowball
-snowballed
-snowballing
-snowballs
-snowbound
-snowcapped
-snowdrift
-snowdrifts
-snowdrop
-snowdrops
-snowed
-snowfall
-snowfalls
-snowfields
-snowflake
-snowflakes
-snowier
-snowiest
-snowing
-snowline
-snowman
-snowmen
-snowplough
-snowploughs
-snows
-snowstorm
-snowstorms
-snowwhite
-snowy
-snub
-snubbed
-snubbing
-snubnosed
-snubs
-snuff
-snuffbox
-snuffed
-snuffing
-snuffle
-snuffled
-snuffles
-snuffling
-snuffs
-snug
-snugger
-snuggle
-snuggled
-snuggles
-snuggling
-snugly
-snugness
-so
-soak
-soaked
-soaker
-soakers
-soaking
-soakings
-soaks
-soandso
-soap
-soapbox
-soaped
-soapier
-soapiest
-soaping
-soaps
-soapy
-soar
-soared
-soaring
-soaringly
-soars
-sob
-sobbed
-sobbing
-sobbings
-sober
-sobered
-soberer
-sobering
-soberly
-sobers
-sobriety
-sobriquet
-sobs
-socalled
-soccer
-sociability
-sociable
-sociably
-social
-socialisation
-socialise
-socialised
-socialising
-socialism
-socialist
-socialistic
-socialists
-socialite
-socially
-socials
-societal
-societies
-society
-sociobiology
-sociocultural
-socioeconomic
-sociolinguistic
-sociolinguistics
-sociolinguists
-sociological
-sociologically
-sociologist
-sociologists
-sociology
-sociopolitical
-sock
-socked
-socket
-sockets
-socking
-socks
-socrates
-sod
-soda
-sodas
-sodded
-sodden
-soddy
-sodium
-sodom
-sodomise
-sodomised
-sodomising
-sodomite
-sodomites
-sodomy
-sods
-sofa
-sofas
-soffit
-soft
-softball
-softboiled
-soften
-softened
-softener
-softeners
-softening
-softens
-softer
-softest
-softhearted
-softie
-softish
-softly
-softness
-softspoken
-software
-softwood
-softy
-soggier
-soggiest
-soggy
-soh
-soil
-soiled
-soiling
-soilings
-soils
-soiree
-sojourn
-sojourned
-sojourner
-sojourners
-sojourning
-sojourns
-solace
-solaces
-solanum
-solar
-solaria
-solarium
-sold
-solder
-soldered
-soldering
-solders
-soldier
-soldiered
-soldiering
-soldierly
-soldiers
-soldiery
-sole
-solecism
-solecisms
-solely
-solemn
-solemnities
-solemnity
-solemnly
-solenoid
-solenoidal
-solenoids
-soler
-soles
-solfa
-solicit
-solicitation
-solicitations
-solicited
-soliciting
-solicitor
-solicitors
-solicitous
-solicitously
-solicits
-solicitude
-solid
-solidarity
-solidification
-solidified
-solidifies
-solidify
-solidifying
-solidity
-solidly
-solidness
-solids
-solitaire
-solitary
-solitude
-solitudes
-solo
-soloing
-soloist
-soloists
-solstice
-solstices
-solubility
-soluble
-solute
-solutes
-solution
-solutions
-solvable
-solve
-solved
-solvency
-solvent
-solvents
-solver
-solvers
-solves
-solving
-soma
-somali
-somalia
-somas
-somatic
-sombre
-sombrely
-sombreness
-sombrero
-some
-somebody
-someday
-somehow
-someone
-somersault
-somersaulted
-somersaulting
-somersaults
-something
-sometime
-sometimes
-someway
-someways
-somewhat
-somewhere
-somnambulist
-somnolence
-somnolent
-son
-sonar
-sonars
-sonata
-sonatas
-sones
-song
-songbird
-songbirds
-songbook
-songs
-songsters
-songwriter
-songwriters
-songwriting
-sonic
-sonically
-soninlaw
-sonnet
-sonnets
-sonny
-sonora
-sonorities
-sonority
-sonorous
-sonorously
-sonorousness
-sons
-sonsinlaw
-soon
-sooner
-soonest
-soonish
-soot
-soothe
-soothed
-soothers
-soothes
-soothing
-soothingly
-soothsayer
-soothsayers
-soothsaying
-sootier
-soots
-sooty
-sop
-sophist
-sophisticate
-sophisticated
-sophisticates
-sophistication
-sophistry
-sophists
-soporific
-sopping
-soppy
-soprano
-sorbet
-sorbets
-sorcerer
-sorcerers
-sorceress
-sorcery
-sordid
-sordidly
-sordidness
-sore
-sorely
-soreness
-sores
-sorghum
-sorority
-sorrel
-sorrier
-sorriest
-sorrow
-sorrowed
-sorrowful
-sorrowfully
-sorrowing
-sorrows
-sorry
-sort
-sortable
-sorted
-sorter
-sorters
-sortie
-sorties
-sorting
-sorts
-sos
-soso
-sot
-sotho
-soubriquet
-soudan
-souffle
-sought
-soughtafter
-souk
-souks
-soul
-souldestroying
-souled
-soulful
-soulfully
-soulless
-souls
-soulsearching
-sound
-soundcheck
-sounded
-sounder
-soundest
-sounding
-soundings
-soundless
-soundlessly
-soundly
-soundness
-soundproof
-soundproofed
-soundproofing
-sounds
-soundtrack
-soundtracks
-soup
-soups
-soupy
-sour
-source
-sourced
-sourceless
-sources
-sourcing
-soured
-sourest
-souring
-sourly
-sourness
-sours
-soused
-south
-southbound
-southerly
-southern
-southerner
-southerners
-southernmost
-southward
-southwards
-souvenir
-souvenirs
-sovereign
-sovereigns
-sovereignty
-soviet
-sow
-sowed
-sower
-sowers
-soweto
-sowing
-sown
-sows
-soy
-soya
-soybean
-soybeans
-spa
-space
-spaceage
-spacecraft
-spaced
-spaceflight
-spaceman
-spacemen
-spacer
-spacers
-spaces
-spaceship
-spaceships
-spacesuit
-spacesuits
-spacey
-spacial
-spacing
-spacings
-spacious
-spaciously
-spaciousness
-spade
-spaded
-spades
-spadework
-spaghetti
-spain
-spam
-span
-spandrels
-spangle
-spangled
-spangles
-spaniel
-spaniels
-spanish
-spank
-spanked
-spanker
-spanking
-spankings
-spanks
-spanned
-spanner
-spanners
-spanning
-spans
-spar
-spare
-spared
-sparely
-spares
-sparetime
-sparing
-sparingly
-spark
-sparked
-sparking
-sparkle
-sparkled
-sparkler
-sparklers
-sparkles
-sparkling
-sparklingly
-sparkly
-sparks
-sparred
-sparring
-sparrow
-sparrowhawk
-sparrows
-spars
-sparse
-sparsely
-sparseness
-sparser
-sparsest
-sparsity
-sparta
-spartan
-spartans
-spas
-spasm
-spasmodic
-spasmodically
-spasms
-spastic
-spastics
-spat
-spate
-spatial
-spatially
-spats
-spatter
-spattered
-spattering
-spatters
-spatula
-spatulas
-spawn
-spawned
-spawning
-spawns
-spay
-spayed
-spaying
-spays
-speak
-speakable
-speaker
-speakers
-speaking
-speaks
-spear
-speared
-spearhead
-spearheaded
-spearheading
-spearheads
-spearing
-spears
-spec
-special
-specialisation
-specialisations
-specialise
-specialised
-specialises
-specialising
-specialism
-specialisms
-specialist
-specialists
-specialities
-speciality
-specially
-specialness
-specials
-specialty
-speciation
-species
-specifiable
-specifiably
-specific
-specifically
-specification
-specifications
-specificities
-specificity
-specificness
-specifics
-specified
-specifier
-specifiers
-specifies
-specify
-specifying
-specimen
-specimens
-specious
-speck
-speckle
-speckled
-speckles
-specks
-specs
-spectacle
-spectacles
-spectacular
-spectacularly
-spectaculars
-spectator
-spectators
-spectra
-spectral
-spectre
-spectres
-spectrogram
-spectrograph
-spectrometer
-spectrometers
-spectrometric
-spectrometry
-spectrophotometer
-spectrophotometers
-spectrophotometry
-spectroscope
-spectroscopes
-spectroscopic
-spectroscopically
-spectroscopy
-spectrum
-specular
-speculate
-speculated
-speculates
-speculating
-speculation
-speculations
-speculative
-speculatively
-speculator
-speculators
-speculum
-sped
-speech
-speeches
-speechifying
-speechless
-speechlessly
-speed
-speedboat
-speedboats
-speedcop
-speeded
-speedier
-speediest
-speedily
-speeding
-speedometer
-speedometers
-speeds
-speedup
-speedway
-speedwell
-speedy
-spell
-spellable
-spellbinder
-spellbinding
-spellbound
-spelled
-speller
-spellers
-spelling
-spellings
-spells
-spelt
-spencer
-spend
-spender
-spenders
-spending
-spends
-spendthrift
-spent
-spermatozoa
-spew
-spewed
-spewing
-spews
-sphagnum
-sphere
-spheres
-spheric
-spherical
-spherically
-spheroid
-spheroidal
-sphincter
-sphincters
-sphinx
-sphygmomanometer
-spice
-spiced
-spicer
-spicery
-spices
-spicier
-spicily
-spicing
-spicy
-spider
-spiders
-spidery
-spied
-spies
-spigot
-spike
-spiked
-spikes
-spikier
-spikiest
-spiking
-spiky
-spill
-spillage
-spillages
-spilled
-spiller
-spilling
-spills
-spilt
-spin
-spinach
-spinal
-spindle
-spindles
-spindly
-spindrier
-spindriers
-spindrift
-spindry
-spine
-spinechilling
-spineless
-spines
-spinet
-spinnaker
-spinner
-spinners
-spinney
-spinning
-spinoff
-spinoffs
-spins
-spinster
-spinsterhood
-spinsters
-spiny
-spiral
-spiralled
-spiralling
-spirally
-spirals
-spirant
-spirants
-spire
-spires
-spirit
-spirited
-spiritedl
-spiritedly
-spiritless
-spirits
-spiritual
-spiritualised
-spiritualism
-spiritualist
-spiritualists
-spirituality
-spiritually
-spirituals
-spit
-spite
-spiteful
-spitefully
-spitfire
-spitfires
-spits
-spitting
-spittle
-spittoon
-spittoons
-splash
-splashdown
-splashed
-splashes
-splashing
-splashy
-splat
-splatter
-splattered
-splattering
-splayed
-splaying
-spleen
-spleens
-splendid
-splendidly
-splendour
-splendours
-splenetic
-splice
-spliced
-splicer
-splicers
-splices
-splicing
-spline
-splines
-splint
-splinted
-splinter
-splintered
-splintering
-splinters
-splints
-split
-splits
-splittable
-splitter
-splitters
-splitting
-splittings
-splodge
-splodges
-splotches
-splurge
-splutter
-spluttered
-spluttering
-splutters
-spoil
-spoilage
-spoiled
-spoiler
-spoilers
-spoiling
-spoils
-spoilsport
-spoilt
-spoke
-spoken
-spokes
-spokeshave
-spokeshaves
-spokesman
-spokesmen
-spokespeople
-spokesperson
-spokespersons
-spokeswoman
-spokeswomen
-sponge
-sponged
-sponger
-sponges
-spongier
-spongiest
-sponginess
-sponging
-spongy
-sponsor
-sponsored
-sponsoring
-sponsors
-sponsorship
-sponsorships
-spontaneity
-spontaneous
-spontaneously
-spoof
-spoofs
-spook
-spooked
-spooking
-spooks
-spooky
-spool
-spooled
-spooling
-spools
-spoon
-spooned
-spoonful
-spoonfuls
-spooning
-spoons
-spoor
-sporadic
-sporadically
-spore
-spores
-sporran
-sporrans
-sport
-sported
-sporting
-sportingly
-sportive
-sports
-sportsman
-sportsmanship
-sportsmen
-sportswear
-sporty
-spot
-spotless
-spotlessly
-spotlessness
-spotlight
-spotlighting
-spotlights
-spotlit
-spoton
-spots
-spotted
-spotter
-spotters
-spottier
-spottiest
-spotting
-spotty
-spouse
-spouses
-spout
-spouted
-spouting
-spouts
-sprain
-sprained
-spraining
-sprains
-sprang
-sprat
-sprats
-sprawl
-sprawled
-sprawling
-sprawls
-spray
-sprayed
-sprayer
-sprayers
-spraying
-sprays
-spread
-spreadeagled
-spreaders
-spreading
-spreads
-spreadsheet
-spreadsheets
-spree
-spreeing
-sprig
-sprightlier
-sprightliest
-sprightliness
-sprightly
-sprigs
-spring
-springboard
-springboards
-springbok
-springboks
-springclean
-springcleaned
-springer
-springier
-springiest
-springing
-springs
-springtime
-springy
-sprinkle
-sprinkled
-sprinkler
-sprinklers
-sprinkles
-sprinkling
-sprint
-sprinted
-sprinter
-sprinters
-sprinting
-sprints
-sprite
-sprites
-sprocket
-sprockets
-sprout
-sprouted
-sprouting
-sprouts
-spruce
-spruced
-sprucing
-sprung
-spry
-spud
-spume
-spun
-spunky
-spur
-spurge
-spurges
-spurious
-spuriously
-spurn
-spurned
-spurning
-spurns
-spurred
-spurring
-spurs
-spurt
-spurted
-spurting
-spurts
-sputnik
-sputniks
-sputter
-sputtered
-sputtering
-sputum
-spy
-spyglass
-spyhole
-spying
-spyings
-squabble
-squabbled
-squabbles
-squabbling
-squad
-squadron
-squadrons
-squads
-squalid
-squall
-squalling
-squalls
-squally
-squalor
-squander
-squandered
-squandering
-squanders
-square
-squared
-squarely
-squareness
-squarer
-squares
-squaring
-squarish
-squash
-squashed
-squashes
-squashier
-squashiest
-squashing
-squashy
-squat
-squats
-squatted
-squatter
-squatters
-squatting
-squaw
-squawk
-squawked
-squawking
-squawks
-squeak
-squeaked
-squeaker
-squeakier
-squeakiest
-squeaking
-squeaks
-squeaky
-squeal
-squealed
-squealer
-squealing
-squeals
-squeamish
-squeamishly
-squeamishness
-squeegee
-squeeze
-squeezed
-squeezer
-squeezes
-squeezing
-squeezy
-squelch
-squelched
-squelching
-squelchy
-squib
-squibs
-squid
-squids
-squiggle
-squiggles
-squint
-squinted
-squinting
-squints
-squire
-squirearchy
-squires
-squirm
-squirmed
-squirming
-squirms
-squirrel
-squirrelled
-squirrels
-squirt
-squirted
-squirting
-squirts
-srilanka
-stab
-stabbed
-stabber
-stabbing
-stabbings
-stabilisation
-stabilise
-stabilised
-stabiliser
-stabilisers
-stabilises
-stabilising
-stability
-stable
-stabled
-stablemate
-stabler
-stables
-stabling
-stably
-stabs
-staccato
-stack
-stacked
-stacker
-stacking
-stacks
-stadia
-stadium
-stadiums
-staff
-staffed
-staffing
-staffroom
-staffs
-stag
-stage
-stagecoach
-stagecoaches
-staged
-stagehands
-stager
-stages
-stagey
-stagflation
-stagger
-staggered
-staggering
-staggeringly
-staggers
-staging
-stagings
-stagnancy
-stagnant
-stagnate
-stagnated
-stagnates
-stagnating
-stagnation
-stags
-staid
-staidness
-stain
-stained
-stainer
-staining
-stainless
-stains
-stair
-staircase
-staircases
-stairhead
-stairs
-stairway
-stairways
-stairwell
-stairwells
-stake
-staked
-stakeholder
-stakeholders
-stakes
-staking
-stalactite
-stalactites
-stalagmite
-stalagmites
-stale
-stalemate
-stalemated
-stalemates
-staleness
-stalin
-stalk
-stalked
-stalker
-stalkers
-stalking
-stalks
-stall
-stalled
-stallholders
-stalling
-stallion
-stallions
-stalls
-stalwart
-stalwarts
-stamen
-stamens
-stamina
-stammer
-stammered
-stammering
-stammers
-stamp
-stamped
-stampede
-stampeded
-stampeding
-stamper
-stampers
-stamping
-stampings
-stamps
-stance
-stances
-stanchion
-stanchions
-stand
-standard
-standardisation
-standardisations
-standardise
-standardised
-standardises
-standardising
-standards
-standby
-standing
-standings
-standpoint
-standpoints
-stands
-standstill
-stank
-stanza
-stanzas
-stapes
-staphylococcus
-staple
-stapled
-stapler
-staplers
-staples
-stapling
-star
-starboard
-starch
-starched
-starches
-starchier
-starchiest
-starchy
-stardom
-stardust
-stare
-stared
-starer
-stares
-starfish
-stargaze
-stargazer
-stargazers
-stargazing
-staring
-stark
-starker
-starkest
-starkly
-starkness
-starless
-starlet
-starlets
-starlight
-starlike
-starling
-starlings
-starlit
-starred
-starrier
-starriest
-starring
-starry
-starryeyed
-stars
-starship
-starspangled
-starstruck
-starstudded
-start
-started
-starter
-starters
-starting
-startle
-startled
-startles
-startling
-startlingly
-starts
-startup
-startups
-starvation
-starve
-starved
-starves
-starving
-stashed
-stashes
-stashing
-stasis
-state
-statecraft
-stated
-statehood
-stateless
-stateliest
-stateliness
-stately
-statement
-statements
-stateoftheart
-staterooms
-states
-statesman
-statesmanlike
-statesmanship
-statesmen
-static
-statical
-statically
-statics
-stating
-station
-stationary
-stationed
-stationer
-stationers
-stationery
-stationing
-stationmaster
-stations
-statistic
-statistical
-statistically
-statistician
-statisticians
-statistics
-stator
-stators
-statuary
-statue
-statues
-statuesque
-statuette
-statuettes
-stature
-statures
-status
-statuses
-statute
-statutes
-statutorily
-statutory
-staunch
-staunchest
-staunching
-staunchly
-staunchness
-stave
-staved
-staves
-staving
-stay
-stayed
-stayers
-staying
-stays
-stead
-steadfast
-steadfastly
-steadfastness
-steadied
-steadier
-steadiest
-steadily
-steadiness
-steady
-steadygoing
-steadying
-steak
-steaks
-steal
-stealer
-stealers
-stealing
-steals
-stealth
-stealthier
-stealthiest
-stealthily
-stealthy
-steam
-steamboat
-steamboats
-steamed
-steamer
-steamers
-steamier
-steamiest
-steaming
-steamroller
-steamrollers
-steams
-steamship
-steamships
-steamy
-steed
-steeds
-steel
-steelclad
-steeled
-steeling
-steels
-steelwork
-steelworker
-steelworkers
-steelworks
-steely
-steep
-steeped
-steepen
-steepened
-steepening
-steepens
-steeper
-steepest
-steeping
-steeple
-steeplechase
-steeplechaser
-steeplechasers
-steeplechasing
-steepled
-steeplejack
-steeples
-steeply
-steepness
-steeps
-steer
-steerable
-steerage
-steered
-steering
-steers
-stegosaurus
-stellar
-stellated
-stem
-stemmed
-stemming
-stems
-stench
-stenches
-stencil
-stencilled
-stencils
-stenographer
-stenographers
-stenographic
-stenography
-stenosis
-stentor
-stentorian
-step
-stepbrother
-stepchildren
-stepdaughter
-stepfather
-stepladder
-stepmother
-stepparents
-steppe
-stepped
-steppes
-stepping
-steps
-stepsister
-stepson
-stepsons
-stepwise
-steradians
-stereo
-stereographic
-stereophonic
-stereos
-stereoscopic
-stereoscopically
-stereoscopy
-stereotype
-stereotyped
-stereotypes
-stereotypical
-stereotypically
-stereotyping
-sterile
-sterilisation
-sterilisations
-sterilise
-sterilised
-steriliser
-sterilising
-sterility
-sterling
-stern
-sterner
-sternest
-sternly
-sternness
-sterns
-sternum
-steroid
-steroids
-stet
-stethoscope
-stevedore
-stew
-steward
-stewardess
-stewardesses
-stewards
-stewardship
-stewed
-stewing
-stews
-stick
-sticker
-stickers
-stickiest
-stickily
-stickiness
-sticking
-stickleback
-sticklebacks
-stickler
-sticks
-sticky
-sties
-stiff
-stiffen
-stiffened
-stiffener
-stiffening
-stiffens
-stiffer
-stiffest
-stiffly
-stiffnecked
-stiffness
-stifle
-stifled
-stifles
-stifling
-stiflingly
-stigma
-stigmas
-stigmata
-stigmatisation
-stigmatise
-stigmatised
-stigmatising
-stiletto
-still
-stillbirths
-stillborn
-stilled
-stiller
-stilling
-stillness
-stills
-stilt
-stilted
-stilts
-stimulant
-stimulants
-stimulate
-stimulated
-stimulates
-stimulating
-stimulation
-stimulator
-stimulatory
-stimuli
-stimulus
-sting
-stinged
-stinger
-stingers
-stingier
-stingily
-stinging
-stingray
-stings
-stingy
-stink
-stinker
-stinkers
-stinking
-stinks
-stinky
-stint
-stinted
-stints
-stipel
-stipend
-stipendiary
-stipends
-stippled
-stipples
-stipulate
-stipulated
-stipulates
-stipulating
-stipulation
-stipulations
-stir
-stirfried
-stirfry
-stirred
-stirrer
-stirrers
-stirring
-stirrings
-stirrup
-stirrups
-stirs
-stitch
-stitched
-stitcher
-stitches
-stitching
-stoa
-stoat
-stoats
-stochastic
-stock
-stockade
-stockbroker
-stockbrokers
-stockbroking
-stockcar
-stocked
-stockholders
-stockholding
-stockier
-stockily
-stocking
-stockinged
-stockings
-stockist
-stockists
-stockpile
-stockpiled
-stockpiles
-stockpiling
-stockroom
-stocks
-stocktaking
-stocky
-stodge
-stodgier
-stodgiest
-stodgy
-stoep
-stoic
-stoical
-stoically
-stoicism
-stoics
-stoke
-stoked
-stoker
-stokers
-stokes
-stoking
-stole
-stolen
-stolid
-stolidity
-stolidly
-stoma
-stomach
-stomachache
-stomachs
-stomata
-stomp
-stomped
-stomping
-stomps
-stone
-stonecold
-stoned
-stoneless
-stonemason
-stonemasons
-stones
-stonewalled
-stoneware
-stonework
-stonier
-stoniest
-stonily
-stoning
-stony
-stood
-stooge
-stooges
-stool
-stoolpigeon
-stools
-stoop
-stooped
-stooping
-stoops
-stop
-stopcock
-stopgap
-stopover
-stoppable
-stoppage
-stoppages
-stopped
-stopper
-stoppered
-stoppers
-stopping
-stops
-stopwatch
-storage
-storages
-store
-stored
-storehouse
-storehouses
-storekeeper
-storekeepers
-storeman
-storeroom
-storerooms
-stores
-storey
-storeys
-stories
-storing
-stork
-storks
-storm
-stormed
-stormer
-stormers
-stormier
-stormiest
-storming
-storms
-stormtroopers
-stormy
-story
-storybook
-storyline
-storylines
-storyteller
-storytellers
-storytelling
-stout
-stouter
-stoutest
-stoutly
-stoutness
-stove
-stovepipe
-stoves
-stow
-stowage
-stowaway
-stowed
-stowing
-stows
-straddle
-straddled
-straddles
-straddling
-strafe
-strafed
-strafing
-straggle
-straggled
-straggler
-stragglers
-straggling
-straggly
-straight
-straightaway
-straighten
-straightened
-straightening
-straightens
-straighter
-straightest
-straightforward
-straightforwardly
-straightforwardness
-straightness
-strain
-strained
-strainer
-strainers
-straining
-strains
-strait
-straiten
-straitened
-straitjacket
-straitjackets
-straits
-strand
-stranded
-stranding
-strands
-strange
-strangely
-strangeness
-stranger
-strangers
-strangest
-strangle
-strangled
-stranglehold
-strangler
-stranglers
-strangles
-strangling
-strangulated
-strangulation
-strap
-strapless
-strapped
-strapper
-strapping
-straps
-strata
-stratagem
-stratagems
-strategic
-strategically
-strategies
-strategist
-strategists
-strategy
-stratification
-stratified
-stratifies
-stratifying
-stratigraphic
-stratigraphical
-stratigraphy
-stratosphere
-stratospheric
-stratospherically
-stratum
-stratus
-straw
-strawberries
-strawberry
-strawman
-straws
-stray
-strayed
-strayer
-straying
-strays
-streak
-streaked
-streaker
-streakers
-streakier
-streakiest
-streaking
-streaks
-streaky
-stream
-streamed
-streamer
-streamers
-streaming
-streamline
-streamlined
-streamlines
-streamlining
-streams
-street
-streets
-streetwalkers
-streetwise
-strength
-strengthen
-strengthened
-strengthening
-strengthens
-strengths
-strenuous
-strenuously
-streptococcal
-streptococci
-streptomycin
-stress
-stressed
-stresses
-stressful
-stressfulness
-stressing
-stretch
-stretchability
-stretchable
-stretched
-stretcher
-stretchered
-stretchers
-stretches
-stretchiness
-stretching
-stretchy
-strew
-strewed
-strewing
-strewn
-striated
-striation
-striations
-stricken
-strict
-stricter
-strictest
-strictly
-strictness
-stricture
-strictures
-stride
-stridency
-strident
-stridently
-strider
-strides
-striding
-strife
-strifes
-strike
-striker
-strikers
-strikes
-striking
-strikingly
-string
-stringed
-stringencies
-stringency
-stringent
-stringently
-stringer
-stringing
-strings
-stringy
-strip
-stripe
-striped
-striper
-stripes
-stripier
-stripiest
-striping
-stripling
-stripped
-stripper
-strippers
-stripping
-strips
-stripy
-strive
-strived
-striven
-striver
-strives
-striving
-strivings
-strode
-stroke
-stroked
-strokes
-stroking
-stroll
-strolled
-stroller
-strollers
-strolling
-strolls
-strong
-stronger
-strongest
-stronghold
-strongholds
-strongish
-strongly
-strongman
-strongmen
-strongminded
-strongroom
-strontium
-strop
-stropped
-stropping
-strops
-strove
-struck
-structural
-structuralism
-structuralist
-structuralists
-structurally
-structure
-structured
-structureless
-structures
-structuring
-strudel
-strudels
-struggle
-struggled
-struggles
-struggling
-strum
-strummed
-strumming
-strumpet
-strung
-strut
-struts
-strutted
-strutter
-strutting
-strychnine
-stub
-stubbed
-stubbing
-stubble
-stubbled
-stubbles
-stubbly
-stubborn
-stubbornly
-stubbornness
-stubby
-stubs
-stucco
-stuccoed
-stuck
-stuckup
-stud
-studded
-student
-students
-studentship
-studentships
-studied
-studier
-studiers
-studies
-studio
-studios
-studious
-studiously
-studiousness
-studs
-study
-studying
-stuff
-stuffed
-stuffer
-stuffier
-stuffiest
-stuffiness
-stuffing
-stuffs
-stuffy
-stultified
-stultify
-stultifying
-stumble
-stumbled
-stumbles
-stumbling
-stumblingly
-stump
-stumped
-stumping
-stumps
-stumpy
-stun
-stung
-stunned
-stunner
-stunning
-stunningly
-stuns
-stunt
-stunted
-stunting
-stuntman
-stunts
-stupefaction
-stupefied
-stupefy
-stupefying
-stupefyingly
-stupendous
-stupendously
-stupid
-stupider
-stupidest
-stupidities
-stupidity
-stupidly
-stupor
-stupors
-sturdier
-sturdiest
-sturdily
-sturdy
-sturgeon
-sturgeons
-stutter
-stuttered
-stuttering
-stutters
-sty
-style
-styled
-styles
-styli
-styling
-stylisation
-stylised
-stylish
-stylishly
-stylishness
-stylist
-stylistic
-stylistically
-stylistics
-stylists
-stylus
-styluses
-stymie
-stymied
-styrene
-styx
-suasion
-suave
-suavely
-sub
-subaltern
-subalterns
-subarctic
-subatomic
-subbed
-subbing
-subclass
-subclasses
-subcommittee
-subcommittees
-subconscious
-subconsciously
-subconsciousness
-subcontinent
-subcontract
-subcontracted
-subcontracting
-subcontractor
-subcontractors
-subcultural
-subculture
-subcultures
-subcutaneous
-subcutaneously
-subdivide
-subdivided
-subdivides
-subdividing
-subdivision
-subdivisions
-subducted
-subduction
-subdue
-subdued
-subdues
-subduing
-subeditor
-subeditors
-subfamily
-subgroup
-subgroups
-subharmonic
-subharmonics
-subhuman
-subject
-subjected
-subjecting
-subjection
-subjective
-subjectively
-subjectivism
-subjectivist
-subjectivity
-subjects
-subjugate
-subjugated
-subjugating
-subjugation
-subjunctive
-sublayer
-sublimate
-sublimated
-sublimation
-sublime
-sublimed
-sublimely
-sublimes
-sublimest
-subliminal
-subliminally
-sublimity
-sublunary
-submarine
-submarines
-submerge
-submerged
-submergence
-submerges
-submerging
-submersible
-submersion
-submission
-submissions
-submissive
-submissively
-submissiveness
-submit
-submits
-submittable
-submitted
-submitter
-submitters
-submitting
-subnormal
-suboptimal
-subordinate
-subordinated
-subordinates
-subordinating
-subordination
-subplot
-subplots
-subpoena
-subpoenaed
-subprogram
-subprograms
-subregional
-subroutine
-subroutines
-subs
-subscribe
-subscribed
-subscriber
-subscribers
-subscribes
-subscribing
-subscript
-subscription
-subscriptions
-subscripts
-subsection
-subsections
-subsequent
-subsequently
-subservience
-subservient
-subset
-subsets
-subside
-subsided
-subsidence
-subsides
-subsidiaries
-subsidiarity
-subsidiary
-subsidies
-subsiding
-subsidise
-subsidised
-subsidises
-subsidising
-subsidy
-subsist
-subsisted
-subsistence
-subsisting
-subsists
-subsoil
-subsonic
-subspace
-subspaces
-subspecies
-substance
-substances
-substandard
-substantial
-substantially
-substantiate
-substantiated
-substantiates
-substantiating
-substantiation
-substantive
-substantively
-substantives
-substation
-substitutable
-substitute
-substituted
-substitutes
-substituting
-substitution
-substitutions
-substrata
-substrate
-substrates
-substratum
-substructure
-substructures
-subsume
-subsumed
-subsumes
-subsuming
-subsurface
-subsystem
-subsystems
-subtenants
-subtend
-subtended
-subtending
-subtends
-subterfuge
-subterranean
-subtext
-subtitle
-subtitled
-subtitles
-subtitling
-subtle
-subtler
-subtlest
-subtleties
-subtlety
-subtly
-subtotal
-subtotals
-subtract
-subtracted
-subtracting
-subtraction
-subtractions
-subtractive
-subtractively
-subtracts
-subtropical
-subtropics
-subtype
-subtypes
-subunit
-subunits
-suburb
-suburban
-suburbanisation
-suburbanites
-suburbia
-suburbs
-subvention
-subventions
-subversion
-subversive
-subversively
-subversives
-subvert
-subverted
-subverting
-subverts
-subway
-subways
-subzero
-succeed
-succeeded
-succeeding
-succeeds
-success
-successes
-successful
-successfully
-succession
-successions
-successive
-successively
-successor
-successors
-succinct
-succinctly
-succinctness
-succour
-succulence
-succulent
-succumb
-succumbed
-succumbing
-succumbs
-such
-suchandsuch
-suchlike
-suck
-suckable
-sucked
-sucker
-suckers
-sucking
-suckle
-suckled
-suckles
-suckling
-sucklings
-sucks
-sucrose
-suction
-sud
-sudan
-sudden
-suddenly
-suddenness
-suds
-sue
-sued
-suede
-sues
-suet
-suffer
-sufferance
-suffered
-sufferer
-sufferers
-suffering
-sufferings
-suffers
-suffice
-sufficed
-suffices
-sufficiency
-sufficient
-sufficiently
-sufficing
-suffix
-suffixed
-suffixes
-suffocate
-suffocated
-suffocates
-suffocating
-suffocatingly
-suffocation
-suffrage
-suffragette
-suffragettes
-suffragist
-suffuse
-suffused
-suffuses
-suffusing
-suffusion
-sugar
-sugarcoated
-sugared
-sugaring
-sugarplums
-sugars
-sugary
-suggest
-suggested
-suggester
-suggesters
-suggestibility
-suggestible
-suggesting
-suggestion
-suggestions
-suggestive
-suggestively
-suggestiveness
-suggests
-sugillate
-suicidal
-suicidally
-suicide
-suicides
-suing
-suit
-suitabilities
-suitability
-suitable
-suitableness
-suitably
-suitcase
-suitcases
-suite
-suited
-suites
-suiting
-suitor
-suitors
-suits
-sulk
-sulked
-sulkier
-sulkiest
-sulkily
-sulkiness
-sulking
-sulks
-sulky
-sullen
-sullenly
-sullenness
-sullied
-sully
-sullying
-sulphate
-sulphates
-sulphide
-sulphides
-sulphonamides
-sulphur
-sulphuric
-sulphurous
-sultan
-sultana
-sultanas
-sultans
-sultry
-sum
-sumatra
-summa
-summability
-summable
-summaries
-summarily
-summarise
-summarised
-summariser
-summarisers
-summarises
-summarising
-summary
-summation
-summations
-summed
-summer
-summers
-summertime
-summery
-summing
-summit
-summits
-summon
-summoned
-summoner
-summoning
-summonings
-summons
-summonsed
-summonses
-summonsing
-sumo
-sump
-sumps
-sumptuous
-sumptuously
-sumptuousness
-sums
-sun
-sunbath
-sunbathe
-sunbathed
-sunbathers
-sunbathing
-sunbeam
-sunbeams
-sunbed
-sunbeds
-sunblock
-sunburn
-sunburned
-sunburns
-sunburnt
-sunburst
-suncream
-sundaes
-sunday
-sundays
-sundial
-sundials
-sundown
-sundried
-sundries
-sundry
-sunflower
-sunflowers
-sung
-sunglasses
-sunk
-sunken
-sunking
-sunless
-sunlight
-sunlit
-sunlounger
-sunned
-sunnier
-sunniest
-sunning
-sunny
-sunrise
-sunrises
-sunroof
-suns
-sunscreen
-sunscreens
-sunset
-sunsets
-sunshade
-sunshine
-sunspot
-sunspots
-sunstroke
-suntan
-suntanned
-sup
-super
-superabundance
-superabundant
-superannuate
-superannuated
-superannuating
-superannuation
-superb
-superbly
-supercharged
-supercharger
-supercilious
-superciliously
-superciliousness
-supercomputer
-supercomputers
-supercomputing
-superconducting
-superconductivity
-superconductor
-superconductors
-supercooled
-supercooling
-supercritical
-superdense
-superfamily
-superficial
-superficiality
-superficially
-superfix
-superfluities
-superfluity
-superfluous
-superfluously
-superglue
-superheat
-superheated
-superhero
-superhuman
-superimpose
-superimposed
-superimposes
-superimposing
-superimposition
-superintend
-superintendence
-superintendent
-superintendents
-superior
-superiority
-superiors
-superlative
-superlatively
-superlatives
-superman
-supermarket
-supermarkets
-supermen
-supermodel
-supermodels
-supernatant
-supernatural
-supernaturally
-supernova
-supernovae
-supernumerary
-superordinate
-superpose
-superposed
-superposition
-superpositions
-superpower
-superpowers
-supersaturated
-supersaturation
-superscript
-superscripts
-supersede
-superseded
-supersedes
-superseding
-supersonic
-supersonically
-superstar
-superstars
-superstate
-superstates
-superstition
-superstitions
-superstitious
-superstitiously
-superstore
-superstores
-superstructure
-superstructures
-supertanker
-supertankers
-supervene
-supervise
-supervised
-supervises
-supervising
-supervision
-supervisions
-supervisor
-supervisors
-supervisory
-supine
-supped
-supper
-suppers
-supping
-supplant
-supplanted
-supplanting
-supple
-supplement
-supplemental
-supplementary
-supplementation
-supplemented
-supplementing
-supplements
-suppleness
-suppliant
-suppliants
-supplicant
-supplicants
-supplicate
-supplicating
-supplication
-supplications
-supplied
-supplier
-suppliers
-supplies
-supply
-supplying
-support
-supportability
-supportable
-supported
-supporter
-supporters
-supporting
-supportive
-supports
-suppose
-supposed
-supposedly
-supposes
-supposing
-supposition
-suppositions
-suppositories
-suppress
-suppressed
-suppresses
-suppressible
-suppressing
-suppression
-suppressive
-suppressor
-suppressors
-suppurating
-supranational
-supranationalism
-supremacist
-supremacy
-supremal
-supreme
-supremely
-supremo
-sups
-surcharge
-surcharged
-surcharges
-surd
-sure
-surefooted
-surely
-sureness
-surer
-surest
-sureties
-surety
-surf
-surface
-surfaced
-surfacer
-surfaces
-surfacing
-surfactant
-surfactants
-surfboard
-surfed
-surfeit
-surfer
-surfers
-surfing
-surfings
-surfs
-surge
-surged
-surgeon
-surgeons
-surgeries
-surgery
-surges
-surgical
-surgically
-surging
-surliest
-surlily
-surliness
-surly
-surmise
-surmised
-surmises
-surmising
-surmount
-surmountable
-surmounted
-surmounting
-surname
-surnames
-surpass
-surpassed
-surpasses
-surpassing
-surplice
-surplus
-surpluses
-surprise
-surprised
-surprises
-surprising
-surprisingly
-surreal
-surrealism
-surrealist
-surrealistic
-surrealists
-surreality
-surrender
-surrendered
-surrendering
-surrenders
-surreptitious
-surreptitiously
-surrey
-surreys
-surrogacy
-surrogate
-surrogates
-surround
-surrounded
-surrounding
-surroundings
-surrounds
-surtax
-surtitles
-surveillance
-survey
-surveyed
-surveying
-surveyor
-surveyors
-surveys
-survivability
-survivable
-survival
-survivals
-survive
-survived
-survives
-surviving
-survivor
-survivors
-susceptibilities
-susceptibility
-susceptible
-sushi
-sushis
-suspect
-suspected
-suspecting
-suspects
-suspend
-suspended
-suspender
-suspenders
-suspending
-suspends
-suspense
-suspension
-suspensions
-suspicion
-suspicions
-suspicious
-suspiciously
-sustain
-sustainability
-sustainable
-sustainably
-sustained
-sustaining
-sustains
-sustenance
-suture
-sutures
-suzerainty
-swab
-swabbed
-swabbing
-swabs
-swad
-swaddled
-swaddling
-swads
-swag
-swagger
-swaggered
-swaggering
-swags
-swahili
-swains
-swallow
-swallowed
-swallower
-swallowing
-swallows
-swallowtail
-swam
-swamp
-swamped
-swampier
-swampiest
-swamping
-swampland
-swamplands
-swamps
-swampy
-swan
-swans
-swansong
-swap
-swappable
-swapped
-swapper
-swappers
-swapping
-swaps
-sward
-swarm
-swarmed
-swarming
-swarms
-swarthier
-swarthiest
-swarthy
-swashbuckling
-swastika
-swastikas
-swat
-swathe
-swathed
-swathes
-swats
-swatted
-swatting
-sway
-swayed
-swaying
-sways
-swazi
-swazis
-swear
-swearer
-swearers
-swearing
-swears
-swearword
-swearwords
-sweat
-sweatband
-sweated
-sweater
-sweaters
-sweatier
-sweatiest
-sweatily
-sweating
-sweats
-sweatshirt
-sweatshirts
-sweatshop
-sweatshops
-sweaty
-swede
-sweden
-swedish
-sweep
-sweepable
-sweeper
-sweepers
-sweeping
-sweepingly
-sweepings
-sweeps
-sweepstake
-sweet
-sweetbread
-sweetcorn
-sweeten
-sweetened
-sweetener
-sweeteners
-sweetening
-sweetens
-sweeter
-sweetest
-sweetheart
-sweethearts
-sweetie
-sweetish
-sweetly
-sweetmeat
-sweetmeats
-sweetness
-sweetpea
-sweets
-sweetshop
-swell
-swelled
-swelling
-swellings
-swells
-sweltering
-sweltry
-swept
-swerve
-swerved
-swerves
-swerving
-swift
-swifter
-swiftest
-swiftlet
-swiftly
-swiftness
-swifts
-swill
-swilled
-swilling
-swim
-swimmer
-swimmers
-swimming
-swimmingly
-swims
-swimsuit
-swimsuits
-swimwear
-swindle
-swindled
-swindler
-swindlers
-swindles
-swindling
-swine
-swines
-swing
-swingeing
-swinger
-swingers
-swinging
-swings
-swingy
-swipe
-swiped
-swipes
-swirl
-swirled
-swirling
-swirls
-swish
-swished
-swishing
-swishy
-swiss
-switch
-switchable
-switchback
-switchboard
-switchboards
-switched
-switcher
-switches
-switchgear
-switching
-swivel
-swivelled
-swivelling
-swivels
-swollen
-swoon
-swooned
-swooning
-swoons
-swoop
-swooped
-swooping
-swoops
-swop
-swopped
-swopping
-swops
-sword
-swordfish
-swords
-swordsman
-swordsmen
-swore
-sworn
-swot
-swots
-swotted
-swotting
-swum
-swung
-sycamore
-sycamores
-sycophancy
-sycophant
-sycophantic
-sycophantically
-sycophants
-sydney
-syllabary
-syllabi
-syllabic
-syllable
-syllables
-syllabub
-syllabus
-syllabuses
-syllogism
-syllogisms
-syllogistic
-sylph
-sylphs
-symbiont
-symbiosis
-symbiotic
-symbiotically
-symbol
-symbolic
-symbolical
-symbolically
-symbolisation
-symbolise
-symbolised
-symbolises
-symbolising
-symbolism
-symbolist
-symbolists
-symbols
-symmetric
-symmetrical
-symmetrically
-symmetries
-symmetrisation
-symmetrising
-symmetry
-sympathetic
-sympathetically
-sympathies
-sympathise
-sympathised
-sympathiser
-sympathisers
-sympathises
-sympathising
-sympathy
-symphonic
-symphonies
-symphonists
-symphony
-symposia
-symposium
-symptom
-symptomatic
-symptomatically
-symptomless
-symptoms
-synagogue
-synagogues
-synapse
-synapses
-synaptic
-sync
-synchronic
-synchronicity
-synchronisation
-synchronise
-synchronised
-synchronises
-synchronising
-synchronous
-synchronously
-synchrony
-synchrotron
-syncopated
-syncopation
-syncretic
-syndicalism
-syndicalist
-syndicate
-syndicated
-syndicates
-syndication
-syndrome
-syndromes
-synergism
-synergistic
-synergy
-synod
-synodic
-synods
-synonym
-synonymic
-synonymous
-synonymously
-synonyms
-synonymy
-synopses
-synopsis
-synoptic
-synovial
-syntactic
-syntactical
-syntactically
-syntagmatic
-syntax
-syntheses
-synthesis
-synthesise
-synthesised
-synthesiser
-synthesisers
-synthesises
-synthesising
-synthetic
-synthetically
-synthetics
-syphilis
-syphilitic
-syphon
-syphoned
-syphoning
-syphons
-syria
-syrian
-syringe
-syringes
-syrup
-syrups
-syrupy
-system
-systematic
-systematically
-systematisation
-systematise
-systemic
-systemically
-systems
-systoles
-systolic
-taal
-tab
-tabasco
-tabbed
-tabbing
-tabby
-tabernacle
-tabernacles
-table
-tableau
-tableaux
-tablebay
-tablecloth
-tablecloths
-tabled
-tableland
-tables
-tablespoon
-tablespoonfuls
-tablespoons
-tablet
-tablets
-tableware
-tabling
-tabloid
-tabloids
-taboo
-taboos
-tabs
-tabular
-tabulate
-tabulated
-tabulates
-tabulating
-tabulation
-tabulations
-tabulator
-tachograph
-tachographs
-tachycardia
-tachyon
-tachyons
-tacit
-tacitly
-taciturn
-tack
-tacked
-tackier
-tackiest
-tackiness
-tacking
-tackle
-tackled
-tackler
-tackles
-tackling
-tacks
-tacky
-tact
-tactful
-tactfully
-tactic
-tactical
-tactically
-tactician
-tactics
-tactile
-tactless
-tactlessly
-tactlessness
-tactual
-tadpole
-tadpoles
-taffeta
-tag
-tagged
-tagging
-tags
-tahiti
-tahr
-tail
-tailed
-tailing
-tailless
-taillessness
-tailor
-tailorable
-tailored
-tailoring
-tailormade
-tailors
-tailpiece
-tailplane
-tails
-tailspin
-tailwind
-taint
-tainted
-tainting
-taints
-taipei
-taiwan
-take
-takeable
-takeaway
-takeaways
-taken
-takeover
-takeovers
-taker
-takers
-takes
-taking
-takings
-talc
-talcum
-tale
-talent
-talented
-talentless
-talents
-tales
-talisman
-talismans
-talk
-talkative
-talkativeness
-talkback
-talked
-talker
-talkers
-talkie
-talkies
-talking
-talkings
-talks
-tall
-tallboy
-taller
-tallest
-tallied
-tallies
-tallish
-tallness
-tallow
-tally
-tallyho
-tallying
-talmud
-talon
-talons
-tambourine
-tambourines
-tame
-tamed
-tamely
-tameness
-tamer
-tamers
-tames
-tamest
-taming
-tamp
-tamped
-tamper
-tampered
-tampering
-tampers
-tan
-tandem
-tandems
-tang
-tangelo
-tangent
-tangential
-tangentially
-tangents
-tangerine
-tangerines
-tangible
-tangibly
-tangle
-tangled
-tangles
-tangling
-tango
-tangy
-tank
-tankage
-tankard
-tankards
-tanked
-tanker
-tankers
-tankful
-tanking
-tanks
-tanned
-tanner
-tanneries
-tanners
-tannery
-tannic
-tannin
-tanning
-tannins
-tannoy
-tans
-tantalise
-tantalised
-tantalising
-tantalisingly
-tantalum
-tantamount
-tantrum
-tantrums
-tanzania
-tap
-tapas
-tapdance
-tapdancing
-tape
-taped
-taper
-taperecorded
-taperecording
-tapered
-taperer
-tapering
-tapers
-tapes
-tapestries
-tapestry
-tapeworm
-tapeworms
-taping
-tapioca
-tapir
-tapped
-tappers
-tapping
-tappings
-taproom
-taps
-tar
-taramasalata
-tarantula
-tarantulas
-tardily
-tardiness
-tardy
-tares
-target
-targeted
-targeting
-targets
-tariff
-tariffs
-tarmac
-tarmacadam
-tarn
-tarnish
-tarnished
-tarnishing
-tarns
-tarot
-tarpaulin
-tarpaulins
-tarragon
-tarred
-tarried
-tarrier
-tarriest
-tarring
-tarry
-tarrying
-tars
-tarsal
-tarsus
-tart
-tartan
-tartans
-tartar
-tartaric
-tartly
-tartness
-tartrate
-tarts
-tarty
-tarzan
-task
-tasked
-tasking
-taskmaster
-tasks
-tasmania
-tassel
-tasselled
-tassels
-taste
-tasted
-tasteful
-tastefully
-tastefulness
-tasteless
-tastelessly
-tastelessness
-taster
-tasters
-tastes
-tastier
-tastiest
-tasting
-tastings
-tasty
-tat
-tattered
-tatters
-tattle
-tattoo
-tattooed
-tattooing
-tattoos
-tatty
-tau
-taught
-taunt
-taunted
-taunter
-taunting
-tauntingly
-taunts
-taut
-tauter
-tautest
-tautly
-tautness
-tautological
-tautologically
-tautologies
-tautologous
-tautology
-tavern
-taverna
-tavernas
-taverns
-tawdry
-tawny
-tax
-taxable
-taxation
-taxdeductible
-taxed
-taxes
-taxfree
-taxi
-taxicab
-taxidermist
-taxidermists
-taxidermy
-taxied
-taxies
-taxiing
-taxing
-taxis
-taxman
-taxonomic
-taxonomical
-taxonomies
-taxonomist
-taxonomists
-taxonomy
-taxpayer
-taxpayers
-taxpaying
-taylor
-tea
-teabag
-teabags
-teach
-teachable
-teacher
-teachers
-teaches
-teaching
-teachings
-teacloth
-teacup
-teacups
-teak
-teal
-team
-teamed
-teaming
-teammate
-teammates
-teams
-teamster
-teamwork
-teaparty
-teapot
-teapots
-tear
-tearaway
-teardrop
-teardrops
-tearful
-tearfully
-tearfulness
-teargas
-tearing
-tearless
-tearoom
-tearooms
-tears
-tearstained
-teas
-tease
-teased
-teaser
-teasers
-teases
-teashop
-teashops
-teasing
-teasingly
-teaspoon
-teaspoonful
-teaspoonfuls
-teaspoons
-teat
-teatime
-teatimes
-teats
-tech
-technical
-technicalities
-technicality
-technically
-technician
-technicians
-technique
-techniques
-technocracies
-technocracy
-technocrat
-technocratic
-technocrats
-technological
-technologically
-technologies
-technologist
-technologists
-technology
-technophiles
-technophobia
-technophobic
-tectonic
-tectonically
-tectonics
-ted
-teddies
-teddy
-tedious
-tediously
-tediousness
-tedium
-tediums
-teds
-tee
-teed
-teehee
-teeing
-teem
-teemed
-teeming
-teems
-teen
-teenage
-teenaged
-teenager
-teenagers
-teeniest
-teens
-teensy
-teeny
-teenyweeny
-teepee
-teepees
-tees
-teeter
-teetered
-teetering
-teeth
-teethe
-teethed
-teethes
-teething
-teethmarks
-teetotal
-teetotalism
-teetotaller
-teetotallers
-teheran
-telaviv
-telecommunication
-telecommunications
-telecommuting
-telecoms
-teleconference
-telegram
-telegrams
-telegraph
-telegraphed
-telegraphic
-telegraphing
-telegraphs
-telegraphy
-telekinesis
-telemetry
-teleological
-teleology
-telepathic
-telepathically
-telepathy
-telephone
-telephoned
-telephones
-telephonic
-telephoning
-telephonist
-telephonists
-telephony
-telephoto
-teleprinter
-teleprinters
-telesales
-telescope
-telescoped
-telescopes
-telescopic
-telescoping
-teletext
-telethon
-teletype
-teletypes
-televise
-televised
-televising
-television
-televisions
-televisual
-teleworking
-telex
-telexes
-tell
-teller
-tellers
-telling
-tellingly
-tells
-telltale
-telly
-temerity
-temper
-tempera
-temperament
-temperamental
-temperamentally
-temperaments
-temperance
-temperate
-temperately
-temperature
-temperatures
-tempered
-tempering
-tempers
-tempest
-tempests
-tempestuous
-tempi
-template
-templates
-temple
-temples
-tempo
-temporal
-temporality
-temporally
-temporaries
-temporarily
-temporary
-tempt
-temptation
-temptations
-tempted
-tempter
-tempters
-tempting
-temptingly
-temptress
-tempts
-ten
-tenability
-tenable
-tenacious
-tenaciously
-tenacity
-tenancies
-tenancy
-tenant
-tenanted
-tenantry
-tenants
-tench
-tend
-tended
-tendencies
-tendency
-tendentious
-tendentiously
-tender
-tendered
-tenderer
-tenderest
-tendering
-tenderly
-tenderness
-tenders
-tending
-tendon
-tendons
-tendril
-tendrils
-tends
-tenement
-tenements
-tenet
-tenets
-tenfold
-tenners
-tennis
-tenon
-tenor
-tenors
-tens
-tense
-tensed
-tensely
-tenseness
-tenser
-tenses
-tensest
-tensile
-tensing
-tension
-tensional
-tensioned
-tensions
-tensity
-tensor
-tensors
-tent
-tentacle
-tentacled
-tentacles
-tentative
-tentatively
-tented
-tenterhooks
-tenth
-tenths
-tents
-tenuous
-tenuously
-tenure
-tenured
-tenures
-tenurial
-tepee
-tepid
-tequila
-tercentenary
-term
-termed
-terminal
-terminally
-terminals
-terminate
-terminated
-terminates
-terminating
-termination
-terminations
-terminator
-terminators
-terming
-termini
-terminological
-terminologies
-terminology
-terminus
-termite
-termites
-termly
-terms
-tern
-ternary
-terns
-terrace
-terraced
-terraces
-terracing
-terracotta
-terraform
-terraformed
-terrain
-terrains
-terrapin
-terrapins
-terrazzo
-terrestrial
-terrible
-terribly
-terrier
-terriers
-terrific
-terrifically
-terrified
-terrifies
-terrify
-terrifying
-terrifyingly
-terrine
-territorial
-territoriality
-territorially
-territories
-territory
-terror
-terrorise
-terrorised
-terrorising
-terrorism
-terrorist
-terrorists
-terrors
-terrorstricken
-terry
-terse
-tersely
-terseness
-terser
-tertiaries
-tertiary
-tessellated
-tessellation
-tessellations
-tesseral
-test
-testability
-testable
-testament
-testamentary
-testaments
-testdrive
-testdriving
-tested
-tester
-testers
-testes
-testicle
-testicles
-testicular
-testier
-testiest
-testified
-testifies
-testify
-testifying
-testily
-testimonial
-testimonials
-testimonies
-testimony
-testiness
-testing
-testings
-testis
-testosterone
-tests
-testtube
-testy
-tetanus
-tetchily
-tetchy
-tether
-tethered
-tethering
-tethers
-tetra
-tetrachloride
-tetrahedra
-tetrahedral
-tetrahedron
-tetrahedrons
-tetrameters
-tetroxide
-texan
-texans
-texas
-text
-textbook
-textbooks
-textile
-textiles
-texts
-textual
-textuality
-textually
-textural
-texturally
-texture
-textured
-textures
-thai
-thalamus
-thalidomide
-thallium
-thames
-than
-thane
-thank
-thanked
-thankful
-thankfully
-thankfulness
-thanking
-thankless
-thanklessly
-thanks
-thanksgiving
-that
-thatch
-thatched
-thatcher
-thatchers
-thatching
-thaumaturge
-thaw
-thawed
-thawing
-thaws
-the
-theatre
-theatres
-theatrical
-theatricality
-theatrically
-theatricals
-thebes
-thee
-theft
-thefts
-their
-theirs
-theism
-theist
-theistic
-theists
-them
-themas
-thematic
-thematically
-theme
-themed
-themes
-themselves
-then
-thence
-thenceforth
-thenceforward
-theocracies
-theocracy
-theodolite
-theodolites
-theologian
-theologians
-theological
-theologically
-theologies
-theologists
-theology
-theorem
-theorems
-theoretic
-theoretical
-theoretically
-theoretician
-theoreticians
-theories
-theorisation
-theorise
-theorised
-theorises
-theorising
-theorist
-theorists
-theory
-theosophy
-therapeutic
-therapeutically
-therapies
-therapist
-therapists
-therapy
-there
-thereabouts
-thereafter
-thereby
-therefor
-therefore
-therefrom
-therein
-thereof
-thereon
-thereto
-thereunder
-thereupon
-therewith
-thermal
-thermally
-thermals
-thermochemical
-thermodynamic
-thermodynamical
-thermodynamically
-thermodynamics
-thermoelectric
-thermometer
-thermometers
-thermoplastic
-thermostat
-thermostatic
-thermostatically
-thermostats
-therms
-thesauri
-thesaurus
-these
-thesis
-thespian
-thespians
-theta
-they
-thick
-thicken
-thickened
-thickening
-thickens
-thicker
-thickest
-thicket
-thickets
-thickish
-thickly
-thickness
-thicknesses
-thickset
-thickskinned
-thief
-thieve
-thieved
-thievery
-thieves
-thieving
-thievish
-thievishness
-thigh
-thighs
-thimble
-thimbleful
-thimblefuls
-thimbles
-thin
-thine
-thing
-things
-think
-thinkable
-thinker
-thinkers
-thinking
-thinks
-thinktank
-thinly
-thinned
-thinner
-thinners
-thinness
-thinnest
-thinning
-thinnish
-thins
-third
-thirdly
-thirds
-thirst
-thirsted
-thirstier
-thirstiest
-thirstily
-thirsting
-thirsts
-thirsty
-thirteen
-thirteenth
-thirties
-thirtieth
-thirty
-this
-thistle
-thistles
-thither
-thomas
-thong
-thongs
-thor
-thoracic
-thorax
-thorium
-thorn
-thornier
-thorniest
-thorns
-thorny
-thorough
-thoroughbred
-thoroughbreds
-thoroughfare
-thoroughfares
-thoroughgoing
-thoroughly
-thoroughness
-those
-thou
-though
-thought
-thoughtful
-thoughtfully
-thoughtfulness
-thoughtless
-thoughtlessly
-thoughtlessness
-thoughtprovoking
-thoughts
-thousand
-thousandfold
-thousands
-thousandth
-thousandths
-thrall
-thrash
-thrashed
-thrasher
-thrashes
-thrashing
-thrashings
-thread
-threadbare
-threaded
-threading
-threads
-threat
-threaten
-threatened
-threatening
-threateningly
-threatens
-threats
-three
-threedimensional
-threefold
-threequarters
-threes
-threesome
-threesomes
-thresh
-threshed
-thresher
-threshers
-threshing
-threshold
-thresholds
-threw
-thrice
-thrift
-thriftier
-thriftiest
-thriftless
-thrifts
-thrifty
-thrill
-thrilled
-thriller
-thrillers
-thrilling
-thrillingly
-thrills
-thrive
-thrived
-thrives
-thriving
-throat
-throatier
-throatiest
-throatily
-throats
-throaty
-throb
-throbbed
-throbbing
-throbs
-thromboses
-thrombosis
-thrombus
-throne
-throned
-thrones
-throng
-thronged
-thronging
-throngs
-throroughly
-throttle
-throttled
-throttles
-throttling
-through
-throughout
-throughput
-throw
-throwaway
-throwback
-thrower
-throwers
-throwing
-thrown
-throws
-thrum
-thrush
-thrushes
-thrust
-thruster
-thrusters
-thrusting
-thrusts
-thud
-thudded
-thudding
-thuds
-thug
-thuggery
-thuggish
-thugs
-thumb
-thumbed
-thumbing
-thumbnail
-thumbprint
-thumbs
-thumbscrew
-thumbscrews
-thump
-thumped
-thumping
-thumps
-thunder
-thunderbolt
-thunderbolts
-thunderclap
-thunderclaps
-thundercloud
-thundered
-thunderflashes
-thundering
-thunderous
-thunderously
-thunders
-thunderstorm
-thunderstorms
-thunderstruck
-thundery
-thursday
-thus
-thwack
-thwart
-thwarted
-thwarting
-thwarts
-thy
-thyme
-thymus
-thyristor
-thyristors
-thyroid
-thyroids
-thyself
-tiara
-tiaras
-tibia
-tibiae
-tic
-tick
-ticked
-ticker
-tickers
-ticket
-ticketed
-tickets
-ticking
-tickle
-tickled
-tickler
-tickles
-tickling
-ticklish
-ticks
-tics
-tidal
-tidbit
-tidbits
-tiddlers
-tiddlywinks
-tide
-tideless
-tides
-tideway
-tidied
-tidier
-tidies
-tidiest
-tidily
-tidiness
-tiding
-tidings
-tidy
-tidying
-tie
-tiebreak
-tied
-tier
-tiered
-tiers
-ties
-tiger
-tigerish
-tigers
-tight
-tighten
-tightened
-tightening
-tightens
-tighter
-tightest
-tightfisted
-tightlipped
-tightly
-tightness
-tightrope
-tights
-tightwad
-tigress
-tigris
-tikka
-tilde
-tildes
-tile
-tiled
-tiler
-tiles
-tiling
-tilings
-till
-tillage
-tilled
-tiller
-tillers
-tilling
-tills
-tilt
-tilted
-tilting
-tilts
-timber
-timbered
-timbre
-time
-timebase
-timeconsuming
-timed
-timeframe
-timehonoured
-timekeeper
-timekeepers
-timekeeping
-timelapse
-timeless
-timelessness
-timeliness
-timely
-timeout
-timepiece
-timer
-timers
-times
-timescale
-timescales
-timeshare
-timetable
-timetabled
-timetables
-timetabling
-timid
-timidity
-timidly
-timing
-timings
-tin
-tincan
-tincture
-tinctured
-tinder
-tinderbox
-tinfoil
-tinge
-tinged
-tinges
-tingle
-tingled
-tingles
-tinglier
-tingliest
-tingling
-tingly
-tinier
-tiniest
-tinker
-tinkered
-tinkering
-tinkers
-tinkle
-tinkled
-tinkling
-tinkly
-tinned
-tinner
-tinnier
-tinniest
-tinnily
-tinnitus
-tinny
-tinopener
-tinpot
-tins
-tinsel
-tinsels
-tint
-tinted
-tinting
-tintings
-tints
-tinware
-tiny
-tip
-tipoff
-tipoffs
-tipped
-tipper
-tipping
-tipple
-tippling
-tips
-tipster
-tipsters
-tipsy
-tiptoe
-tiptoed
-tiptoeing
-tiptoes
-tiptop
-tirade
-tirades
-tire
-tired
-tiredly
-tiredness
-tireless
-tirelessly
-tires
-tiresome
-tiresomely
-tiring
-tiro
-tissue
-tissues
-tit
-titan
-titanic
-titanically
-titanium
-titans
-titbit
-titbits
-titfortat
-tithe
-tithes
-tithing
-titillate
-titillated
-titillating
-titillation
-title
-titled
-titles
-titling
-titrated
-titration
-titre
-titres
-tits
-titter
-tittered
-tittering
-titters
-titular
-to
-toad
-toadies
-toads
-toadstool
-toadstools
-toady
-toast
-toasted
-toaster
-toasters
-toasting
-toasts
-toasty
-tobacco
-tobacconist
-tobacconists
-tobago
-toboggan
-tobogganing
-toby
-toccata
-tocsin
-today
-toddle
-toddled
-toddler
-toddlers
-toddling
-toddy
-todies
-toe
-toed
-toehold
-toeing
-toeless
-toenail
-toenails
-toes
-toffee
-toffees
-toffy
-tofu
-tog
-toga
-togas
-together
-togetherness
-toggle
-toggled
-toggles
-toggling
-togo
-togs
-toil
-toiled
-toiler
-toilet
-toileting
-toiletries
-toiletry
-toilets
-toilette
-toiling
-toils
-toitoi
-tokamak
-token
-tokenism
-tokenistic
-tokens
-tokyo
-tolbooth
-told
-toledo
-tolerable
-tolerably
-tolerance
-tolerances
-tolerant
-tolerantly
-tolerate
-tolerated
-tolerates
-tolerating
-toleration
-toll
-tolled
-tollgate
-tolling
-tolls
-toluene
-tomahawk
-tomahawks
-tomato
-tomb
-tombola
-tomboy
-tomboys
-tombs
-tombstone
-tombstones
-tomcat
-tome
-tomes
-tomfoolery
-tomography
-tomorrow
-tomorrows
-tomtom
-ton
-tonal
-tonalities
-tonality
-tonally
-tone
-toned
-tonedeaf
-toneless
-tonelessly
-toner
-toners
-tones
-tonga
-tongs
-tongue
-tongueincheek
-tongues
-tonguetied
-tonguetwister
-tonguetwisters
-tonic
-tonics
-tonight
-toning
-tonnage
-tonnages
-tonne
-tonnes
-tons
-tonsil
-tonsillectomy
-tonsillitis
-tonsils
-tonsure
-tony
-too
-took
-tool
-toolbox
-toolboxes
-tooled
-tooling
-toolmaker
-toolmaking
-tools
-toot
-tooted
-tooth
-toothache
-toothbrush
-toothbrushes
-toothed
-toothier
-toothiest
-toothless
-toothmarks
-toothpaste
-toothpick
-toothpicks
-toothsome
-toothy
-tooting
-tootle
-top
-topaz
-topazes
-topcoat
-topheavy
-topiary
-topic
-topical
-topicality
-topically
-topics
-topless
-toplevel
-topmost
-topnotch
-topographic
-topographical
-topographically
-topography
-topological
-topologically
-topologies
-topologist
-topologists
-topology
-topped
-topper
-topping
-toppings
-topple
-toppled
-topples
-toppling
-tops
-topsoil
-topspin
-topsyturvy
-torah
-torch
-torchbearer
-torchbearers
-torched
-torches
-torchlight
-torchlit
-tore
-tori
-tories
-torment
-tormented
-tormenting
-tormentor
-tormentors
-torments
-torn
-tornado
-toronto
-torpedo
-torpedoed
-torpid
-torpor
-torque
-torques
-torrent
-torrential
-torrents
-torrid
-torsion
-torsional
-torsions
-torso
-tortoise
-tortoises
-tortoiseshell
-torts
-tortuous
-tortuously
-torture
-tortured
-torturer
-torturers
-tortures
-torturing
-torturous
-torus
-tory
-toss
-tossed
-tossers
-tosses
-tossing
-tossup
-tossups
-tot
-total
-totalising
-totalitarian
-totalitarianism
-totality
-totalled
-totalling
-totally
-totals
-totem
-totemic
-totems
-tots
-totted
-totter
-tottered
-tottering
-totters
-totting
-toucans
-touch
-touchandgo
-touchdown
-touchdowns
-touche
-touched
-toucher
-touches
-touchier
-touchiest
-touchiness
-touching
-touchingly
-touchy
-tough
-toughen
-toughened
-toughens
-tougher
-toughest
-toughie
-toughies
-toughly
-toughness
-toughs
-toupee
-tour
-toured
-tourer
-tourers
-touring
-tourism
-tourist
-touristic
-tourists
-touristy
-tournament
-tournaments
-tourney
-tourniquet
-tours
-tousled
-tousles
-tout
-touted
-touting
-touts
-tow
-toward
-towards
-towed
-towel
-towelled
-towelling
-towels
-tower
-towered
-towering
-towers
-towing
-town
-towns
-townscape
-townscapes
-townsfolk
-township
-townships
-townsman
-townsmen
-townspeople
-towpath
-towpaths
-tows
-toxaemia
-toxic
-toxicity
-toxicological
-toxicology
-toxin
-toxins
-toy
-toyed
-toying
-toymaker
-toys
-toyshop
-trace
-traceability
-traceable
-traced
-traceless
-tracer
-tracers
-tracery
-traces
-trachea
-tracheal
-tracheostomy
-tracheotomy
-tracing
-tracings
-track
-trackbed
-tracked
-tracker
-trackers
-tracking
-trackless
-tracks
-tracksuit
-tracksuits
-trackway
-trackways
-tract
-tractability
-tractable
-traction
-tractor
-tractors
-tracts
-trad
-trade
-tradeable
-traded
-tradein
-tradeins
-trademark
-trademarked
-trademarks
-trader
-traders
-trades
-tradesman
-tradesmen
-tradespeople
-trading
-tradings
-tradition
-traditional
-traditionalism
-traditionalist
-traditionalists
-traditionally
-traditions
-traduced
-traducer
-traffic
-trafficked
-trafficker
-traffickers
-trafficking
-tragedian
-tragedians
-tragedies
-tragedy
-tragic
-tragical
-tragically
-trail
-trailed
-trailer
-trailers
-trailing
-trails
-train
-trained
-trainee
-trainees
-trainer
-trainers
-training
-trainings
-trainload
-trains
-trait
-traitor
-traitorous
-traitorously
-traitors
-traits
-trajectories
-trajectory
-tram
-tramcar
-tramcars
-tramlines
-trammel
-tramp
-tramped
-tramping
-trample
-trampled
-tramples
-trampling
-trampoline
-trampolines
-trampolining
-trampolinist
-tramps
-trams
-tramway
-tramways
-trance
-trances
-tranche
-tranches
-tranny
-tranquil
-tranquillise
-tranquillised
-tranquilliser
-tranquillisers
-tranquillity
-tranquilly
-transact
-transacted
-transacting
-transaction
-transactional
-transactions
-transactor
-transatlantic
-transceiver
-transceivers
-transcend
-transcended
-transcendence
-transcendent
-transcendental
-transcendentally
-transcendentals
-transcending
-transcends
-transcontinental
-transcribe
-transcribed
-transcriber
-transcribers
-transcribes
-transcribing
-transcript
-transcription
-transcriptional
-transcriptions
-transcripts
-transducer
-transducers
-transduction
-transection
-transept
-transepts
-transfer
-transferability
-transferable
-transferee
-transferees
-transference
-transferral
-transferred
-transferring
-transfers
-transfiguration
-transfigured
-transfinite
-transfinitely
-transfixed
-transform
-transformation
-transformational
-transformations
-transformative
-transformed
-transformer
-transformers
-transforming
-transforms
-transfused
-transfusing
-transfusion
-transfusions
-transgress
-transgressed
-transgresses
-transgressing
-transgression
-transgressions
-transgressive
-transgressor
-transgressors
-transhipment
-transience
-transient
-transiently
-transients
-transistor
-transistorised
-transistors
-transit
-transition
-transitional
-transitions
-transitive
-transitively
-transitivity
-transitoriness
-transitory
-transits
-translatable
-translate
-translated
-translates
-translating
-translation
-translational
-translations
-translator
-translators
-transliterate
-transliterated
-transliterates
-transliterating
-transliteration
-transliterations
-translucence
-translucency
-translucent
-transmigration
-transmissible
-transmission
-transmissions
-transmissive
-transmit
-transmits
-transmittable
-transmittance
-transmitted
-transmitter
-transmitters
-transmitting
-transmogrification
-transmogrifies
-transmogrify
-transmutation
-transmute
-transmuted
-transmuting
-transnational
-transom
-transonic
-transparencies
-transparency
-transparent
-transparently
-transpiration
-transpire
-transpired
-transpires
-transplant
-transplantation
-transplanted
-transplanting
-transplants
-transponder
-transponders
-transport
-transportability
-transportable
-transportation
-transported
-transporter
-transporters
-transporting
-transports
-transpose
-transposed
-transposes
-transposing
-transposition
-transpositions
-transverse
-transversely
-transvestism
-transvestite
-transvestites
-trap
-trapdoor
-trapdoors
-trapeze
-trappable
-trapped
-trapper
-trappers
-trapping
-trappings
-traps
-trash
-trashed
-trashy
-trauma
-traumas
-traumata
-traumatic
-traumatise
-traumatised
-travail
-travails
-travel
-travelled
-traveller
-travellers
-travelling
-travelogue
-travelogues
-travels
-traversal
-traversals
-traverse
-traversed
-traverses
-traversing
-travesties
-travesty
-trawl
-trawled
-trawler
-trawlers
-trawling
-trawlnet
-trawls
-tray
-trays
-treacherous
-treacherously
-treachery
-treacle
-tread
-treader
-treading
-treadle
-treadmill
-treadmills
-treads
-treason
-treasonable
-treasonous
-treasons
-treasure
-treasured
-treasurer
-treasurers
-treasurership
-treasures
-treasuries
-treasuring
-treasury
-treat
-treatable
-treated
-treaties
-treating
-treatise
-treatises
-treatment
-treatments
-treats
-treaty
-treble
-trebled
-trebles
-trebling
-tree
-treeless
-trees
-treetop
-treetops
-trefoil
-trefoils
-trek
-trekked
-trekker
-trekkers
-trekking
-treks
-trellis
-trellised
-trellises
-tremble
-trembled
-trembler
-trembles
-trembling
-tremblingly
-tremblings
-tremendous
-tremendously
-tremolo
-tremor
-tremors
-tremulous
-tremulously
-tremulousness
-trench
-trenchant
-trenchantly
-trenched
-trencher
-trenches
-trenching
-trend
-trendier
-trendiest
-trendiness
-trends
-trendy
-trepanned
-trepidation
-trepidations
-trespass
-trespassed
-trespasser
-trespassers
-trespasses
-trespassing
-tress
-tresses
-trestle
-trestles
-trews
-triad
-triadic
-triads
-triage
-trial
-trials
-triangle
-triangles
-triangular
-triangulate
-triangulated
-triangulating
-triangulation
-triangulations
-triathlon
-triatomic
-tribal
-tribalism
-tribally
-tribe
-tribes
-tribesman
-tribesmen
-tribespeople
-tribulation
-tribulations
-tribunal
-tribunals
-tribune
-tribunes
-tributaries
-tributary
-tribute
-tributes
-trice
-trick
-tricked
-trickery
-trickier
-trickiest
-trickily
-tricking
-trickle
-trickled
-trickles
-trickling
-tricks
-trickster
-tricksters
-tricky
-tricolour
-tricolours
-tricycle
-tricycles
-trident
-tridents
-tried
-triennial
-trier
-tries
-triffid
-triffids
-trifle
-trifled
-trifler
-trifles
-trifling
-trigger
-triggered
-triggerhappy
-triggering
-triggers
-triglyceride
-trigonometric
-trigonometrical
-trigonometry
-trigram
-trigrams
-trigs
-trikes
-trilateral
-trilby
-trilingual
-trill
-trilled
-trilling
-trillion
-trillions
-trills
-trilobite
-trilobites
-trilogies
-trilogy
-trim
-trimaran
-trimmed
-trimmer
-trimmers
-trimming
-trimmings
-trimodal
-trims
-trinidad
-trinity
-trinket
-trinkets
-trio
-trip
-tripartite
-tripe
-triplane
-triple
-tripled
-triples
-triplet
-triplets
-triplex
-triplicate
-triplication
-tripling
-triply
-tripod
-tripods
-tripoli
-tripped
-trippers
-tripping
-trips
-triptych
-tripwire
-tripwires
-trireme
-trisecting
-trisection
-trisector
-tristan
-trite
-triteness
-tritium
-triumph
-triumphal
-triumphalism
-triumphalist
-triumphant
-triumphantly
-triumphed
-triumphing
-triumphs
-triumvirate
-trivia
-trivial
-trivialisation
-trivialisations
-trivialise
-trivialised
-trivialises
-trivialising
-trivialities
-triviality
-trivially
-trod
-trodden
-troglodyte
-troglodytes
-troika
-troikas
-troll
-trolley
-trolleys
-trolling
-trollish
-trolls
-trombone
-trombones
-trombonist
-trombonists
-troop
-trooped
-trooper
-troopers
-trooping
-troops
-troopship
-trope
-tropes
-trophies
-trophy
-tropic
-tropical
-tropically
-tropics
-tropopause
-troposphere
-tropospheric
-trot
-trots
-trotted
-trotter
-trotters
-trotting
-troubadour
-troubadours
-trouble
-troubled
-troublemaker
-troublemakers
-troubles
-troubleshooter
-troubleshooters
-troubleshooting
-troublesome
-troublesomeness
-troubling
-trough
-troughs
-trounce
-trounced
-trounces
-trouncing
-troupe
-trouper
-troupers
-troupes
-trouser
-trousers
-trout
-trouts
-trove
-trowel
-trowels
-troy
-truancy
-truant
-truanting
-truants
-truce
-truces
-truck
-trucks
-truculence
-truculent
-truculently
-trudge
-trudged
-trudges
-trudging
-true
-trueblue
-truer
-truest
-truffle
-truffles
-truism
-truisms
-truly
-trump
-trumped
-trumpery
-trumpet
-trumpeted
-trumpeter
-trumpeters
-trumpeting
-trumpets
-trumps
-truncate
-truncated
-truncates
-truncating
-truncation
-truncations
-truncheon
-truncheons
-trundle
-trundled
-trundles
-trundling
-trunk
-trunking
-trunks
-trunnion
-trunnions
-truss
-trussed
-trusses
-trussing
-trust
-trusted
-trustee
-trustees
-trusteeship
-trustful
-trustfully
-trustfulness
-trusties
-trusting
-trustingly
-trusts
-trustworthiness
-trustworthy
-trusty
-truth
-truthful
-truthfully
-truthfulness
-truths
-try
-trying
-tsetse
-tshirt
-tsunami
-tswana
-tswanas
-tuareg
-tuaregs
-tuatara
-tub
-tuba
-tubas
-tubby
-tube
-tubed
-tubeless
-tuber
-tubercular
-tuberculosis
-tubers
-tubes
-tubing
-tubs
-tubular
-tubules
-tuck
-tucked
-tucker
-tuckers
-tucking
-tucks
-tues
-tuesday
-tuesdays
-tuft
-tufted
-tufting
-tufts
-tug
-tugela
-tugged
-tugging
-tugs
-tuition
-tulip
-tulips
-tumble
-tumbled
-tumbledown
-tumbler
-tumblers
-tumbles
-tumbling
-tumbrils
-tumescent
-tummies
-tummy
-tumour
-tumours
-tumult
-tumults
-tumultuous
-tumultuously
-tumulus
-tun
-tuna
-tunable
-tunas
-tundra
-tundras
-tune
-tuned
-tuneful
-tunefully
-tuneless
-tunelessly
-tuner
-tuners
-tunes
-tungsten
-tunic
-tunics
-tuning
-tunings
-tunisia
-tunisian
-tunnel
-tunnelled
-tunnellers
-tunnelling
-tunnels
-tunny
-tuns
-tuppence
-tuppences
-turban
-turbans
-turbid
-turbidity
-turbine
-turbines
-turbo
-turbocharged
-turbocharger
-turboprop
-turbot
-turbulence
-turbulent
-tureen
-tureens
-turf
-turfed
-turfs
-turfy
-turgid
-turgidity
-turgidly
-turin
-turk
-turkey
-turkeys
-turkish
-turks
-turmeric
-turmoil
-turmoils
-turn
-turnabout
-turnaround
-turncoat
-turncoats
-turned
-turner
-turners
-turning
-turnings
-turnip
-turnips
-turnkey
-turnout
-turnouts
-turnover
-turnovers
-turnpike
-turnround
-turns
-turnstile
-turnstiles
-turntable
-turntables
-turpentine
-turpitude
-turquoise
-turret
-turreted
-turrets
-turtle
-turtleneck
-turtles
-tuscany
-tusk
-tusked
-tusker
-tusks
-tussle
-tussles
-tussling
-tussock
-tussocks
-tussocky
-tutelage
-tutelary
-tutor
-tutored
-tutorial
-tutorials
-tutoring
-tutors
-tutu
-tuxedo
-twain
-twang
-twanged
-twanging
-twangs
-tweak
-tweaked
-tweaking
-tweaks
-twee
-tweed
-tweeds
-tweedy
-tweeness
-tweet
-tweeter
-tweeters
-tweets
-tweezers
-twelfth
-twelfths
-twelve
-twelves
-twenties
-twentieth
-twenty
-twice
-twiddle
-twiddled
-twiddler
-twiddles
-twiddling
-twiddly
-twig
-twigged
-twiggy
-twigs
-twilight
-twilit
-twill
-twin
-twine
-twined
-twines
-twinge
-twinges
-twining
-twinkle
-twinkled
-twinkles
-twinkling
-twinned
-twinning
-twins
-twirl
-twirled
-twirling
-twirls
-twist
-twisted
-twister
-twisters
-twisting
-twists
-twisty
-twit
-twitch
-twitched
-twitches
-twitching
-twitchy
-twitter
-twittered
-twittering
-two
-twodimensional
-twofaced
-twofold
-twosome
-tycoon
-tycoons
-tying
-tyke
-tykes
-type
-typecast
-typecasting
-typed
-typeface
-typefaces
-typeless
-types
-typescript
-typescripts
-typeset
-typesets
-typesetter
-typesetters
-typesetting
-typewriter
-typewriters
-typewriting
-typewritten
-typhoid
-typhoon
-typhoons
-typhus
-typical
-typicality
-typically
-typified
-typifies
-typify
-typifying
-typing
-typings
-typist
-typists
-typographer
-typographers
-typographic
-typographical
-typographically
-typography
-typological
-typologically
-typologies
-typology
-tyrannic
-tyrannical
-tyrannically
-tyrannicide
-tyrannies
-tyrannise
-tyrannised
-tyrannous
-tyranny
-tyrant
-tyrants
-tyre
-tyres
-uboats
-udder
-udders
-ufo
-uganda
-ugandan
-uglier
-ugliest
-uglification
-ugliness
-ugly
-uhuh
-uke
-ukraine
-ukulele
-ukuleles
-ulcer
-ulcerate
-ulcerated
-ulceration
-ulcerations
-ulcerous
-ulcers
-ulster
-ulsters
-ulterior
-ultimacy
-ultimate
-ultimately
-ultimatum
-ultimatums
-ultimo
-ultra
-ultramarine
-ultramontane
-ultrasonic
-ultrasonics
-ultrasound
-ultraviolet
-umbilical
-umbilicus
-umbra
-umbrae
-umbrage
-umbrageous
-umbras
-umbrella
-umbrellas
-umlaut
-umlauts
-umpire
-umpired
-umpires
-umpiring
-umpteen
-umpteenth
-unabashed
-unabashedly
-unabated
-unable
-unabridged
-unabsorbed
-unacceptability
-unacceptable
-unacceptably
-unaccepted
-unaccommodating
-unaccompanied
-unaccountability
-unaccountable
-unaccountably
-unaccounted
-unaccustomed
-unachievable
-unacknowledged
-unacquainted
-unactivated
-unadapted
-unadaptive
-unaddressable
-unaddressed
-unadjusted
-unadorned
-unadulterated
-unadventurous
-unadvertised
-unaesthetic
-unaffected
-unaffectedly
-unaffiliated
-unaffordable
-unafraid
-unaided
-unaligned
-unalike
-unallocated
-unalloyed
-unalterable
-unalterably
-unaltered
-unambiguity
-unambiguous
-unambiguously
-unambitious
-unamended
-unamused
-unanimity
-unanimous
-unanimously
-unannotated
-unannounced
-unanswerable
-unanswered
-unanticipated
-unapologetic
-unappealing
-unappeased
-unappetising
-unappreciated
-unappreciative
-unapproachable
-unapproved
-unapt
-unarchived
-unarguable
-unarguably
-unarm
-unarmed
-unarms
-unaroused
-unarticulated
-unary
-unashamed
-unashamedly
-unasked
-unassailable
-unassailed
-unassertive
-unassigned
-unassisted
-unassociated
-unassuaged
-unassuming
-unattached
-unattainable
-unattainably
-unattained
-unattended
-unattenuated
-unattractive
-unattractiveness
-unattributable
-unattributed
-unaudited
-unauthenticated
-unauthorised
-unavailability
-unavailable
-unavailing
-unavailingly
-unavenged
-unavoidable
-unavoidably
-unawakened
-unaware
-unawareness
-unawares
-unawed
-unbalance
-unbalanced
-unbalances
-unbalancing
-unbanned
-unbanning
-unbaptised
-unbar
-unbarred
-unbars
-unbearable
-unbearably
-unbeatable
-unbeaten
-unbecoming
-unbeknown
-unbeknownst
-unbelievability
-unbelievable
-unbelievably
-unbelieved
-unbeliever
-unbelievers
-unbelieving
-unbend
-unbending
-unbent
-unbiased
-unbiasedly
-unbiassed
-unbiassedly
-unbidden
-unbind
-unbleached
-unblemished
-unblinking
-unblinkingly
-unblock
-unblocked
-unblocking
-unbloodied
-unboiled
-unbolt
-unbolted
-unbooked
-unborn
-unbosom
-unbothered
-unbound
-unbounded
-unbowed
-unbraced
-unbracketed
-unbranded
-unbreakability
-unbreakable
-unbridgeable
-unbridged
-unbridled
-unbroken
-unbruised
-unbuckle
-unbuckled
-unbuckling
-unbundled
-unburden
-unburdened
-unburdening
-unburied
-unburned
-unburnt
-unbutton
-unbuttoned
-unbuttoning
-uncalibrated
-uncalled
-uncancelled
-uncannily
-uncanny
-uncapped
-uncared
-uncaring
-uncased
-uncatalogued
-uncaught
-unceasing
-unceasingly
-uncelebrated
-uncensored
-unceremoniously
-uncertain
-uncertainly
-uncertainties
-uncertainty
-unchain
-unchained
-unchaining
-unchallengeable
-unchallenged
-unchangeable
-unchanged
-unchanging
-unchaperoned
-uncharacteristic
-uncharacteristically
-uncharged
-uncharismatic
-uncharitable
-uncharitably
-uncharted
-unchartered
-uncheckable
-unchecked
-unchristened
-unchristian
-unchronicled
-uncircumcised
-uncivil
-uncivilised
-unclad
-unclaimed
-unclasped
-unclasping
-unclassifiable
-unclassified
-uncle
-unclean
-uncleanliness
-uncleanly
-unclear
-uncleared
-unclench
-unclenched
-unclenching
-uncles
-unclesam
-unclimbable
-unclimbed
-unclog
-unclosed
-unclothed
-unclouded
-uncluttered
-uncoil
-uncoiled
-uncoiling
-uncoils
-uncollated
-uncollected
-uncollimated
-uncombed
-uncomely
-uncomfortable
-uncomfortableness
-uncomfortably
-uncommitted
-uncommon
-uncommonly
-uncommunicative
-uncompetitive
-uncompetitiveness
-uncompilable
-uncomplaining
-uncomplainingly
-uncompleted
-uncomplicated
-uncomplimentary
-uncomprehending
-uncomprehendingly
-uncompressed
-uncompromisable
-uncompromising
-uncompromisingly
-unconcern
-unconcerned
-unconcernedly
-unconditional
-unconditionally
-unconditioned
-unconfined
-unconfirmed
-unconfused
-uncongenial
-unconnected
-unconquerable
-unconquered
-unconscionable
-unconscionably
-unconscious
-unconsciously
-unconsciousness
-unconsecrated
-unconsidered
-unconsoled
-unconstitutional
-unconstitutionally
-unconstrained
-unconsumed
-uncontainable
-uncontaminated
-uncontentious
-uncontested
-uncontrollable
-uncontrollably
-uncontrolled
-uncontroversial
-uncontroversially
-unconventional
-unconventionally
-unconverted
-unconvinced
-unconvincing
-unconvincingly
-uncooked
-uncooperative
-uncoordinated
-uncorked
-uncorrectable
-uncorrected
-uncorrelated
-uncorroborated
-uncorrupted
-uncountable
-uncountably
-uncounted
-uncouple
-uncoupled
-uncouth
-uncouthness
-uncover
-uncovered
-uncovering
-uncovers
-uncrackable
-uncreased
-uncreated
-uncreative
-uncredited
-uncritical
-uncritically
-uncross
-uncrossable
-uncrossed
-uncrowded
-uncrowned
-uncrushable
-unction
-unctuous
-unctuously
-uncultivated
-uncultured
-uncured
-uncurled
-uncut
-undamaged
-undated
-undaunted
-undead
-undeceived
-undecidability
-undecidable
-undecided
-undeclared
-undecorated
-undefeated
-undefended
-undefiled
-undefinable
-undefined
-undeliverable
-undelivered
-undemanding
-undemocratic
-undemocratically
-undemonstrative
-undeniable
-undeniably
-under
-underachievement
-underachieving
-underarm
-underbelly
-underbody
-undercarriage
-underclass
-underclothes
-underclothing
-undercoat
-undercoating
-undercooked
-undercover
-undercroft
-undercurrent
-undercurrents
-undercut
-undercuts
-undercutting
-underdeveloped
-underdevelopment
-underdog
-underdogs
-underdone
-undereducated
-underemphasis
-underemployment
-underestimate
-underestimated
-underestimates
-underestimating
-underestimation
-underexploited
-underfed
-underfloor
-underflow
-underfoot
-underframe
-underfund
-underfunded
-underfunding
-undergarment
-undergarments
-undergo
-undergoes
-undergoing
-undergone
-undergraduate
-undergraduates
-underground
-undergrounds
-undergrowth
-underhand
-underinvestment
-underlain
-underlay
-underlie
-underlies
-underline
-underlined
-underlines
-underling
-underlings
-underlining
-underlinings
-underloaded
-underlying
-undermanned
-undermine
-undermined
-undermines
-undermining
-underneath
-undernourished
-undernourishment
-underpaid
-underpants
-underparts
-underpass
-underpay
-underpaying
-underperformance
-underperformed
-underpin
-underpinned
-underpinning
-underpinnings
-underpins
-underplay
-underplayed
-underplays
-underpopulated
-underpopulation
-underpowered
-underpriced
-underpricing
-underprivileged
-underrate
-underrated
-underscored
-undersea
-underside
-undersides
-undersigned
-undersized
-underskirt
-understaffed
-understand
-understandability
-understandable
-understandably
-understander
-understanding
-understandingly
-understandings
-understands
-understate
-understated
-understatement
-understates
-understating
-understocked
-understood
-understorey
-understudy
-undertake
-undertaken
-undertaker
-undertakers
-undertakes
-undertaking
-undertakings
-undertone
-undertones
-undertook
-underutilised
-undervalued
-undervalues
-undervaluing
-underwater
-underwear
-underweight
-underwent
-underwood
-underworld
-underwrite
-underwriter
-underwriters
-underwrites
-underwriting
-underwritten
-underwrote
-undeserved
-undeservedly
-undeserving
-undesirability
-undesirable
-undesirables
-undesirably
-undesired
-undetectability
-undetectable
-undetectably
-undetected
-undetermined
-undeterred
-undetonated
-undeveloped
-undiagnosable
-undiagnosed
-undid
-undifferentiated
-undigested
-undignified
-undiluted
-undiminished
-undiplomatic
-undirected
-undiscerning
-undisciplined
-undisclosed
-undiscovered
-undiscriminated
-undiscriminating
-undisguised
-undisguisedly
-undismayed
-undisplayed
-undisputed
-undissipated
-undistinguished
-undistorted
-undistributed
-undisturbed
-undivided
-undo
-undocumented
-undoing
-undoings
-undomesticated
-undone
-undoubted
-undoubtedly
-undress
-undressed
-undressing
-undrinkability
-undrinkable
-undroppable
-undue
-undulate
-undulated
-undulates
-undulating
-undulation
-undulations
-unduly
-undying
-unearned
-unearth
-unearthed
-unearthing
-unearthly
-unearths
-unease
-uneasier
-uneasiest
-uneasily
-uneasiness
-uneasy
-uneatable
-uneaten
-uneconomic
-uneconomical
-unedifying
-unedited
-uneducated
-unelectable
-unelected
-unemotional
-unemotionally
-unemployable
-unemployed
-unemployment
-unencrypted
-unencumbered
-unending
-unendingly
-unendurable
-unenforceable
-unengaged
-unenlightened
-unenlightening
-unentered
-unenthusiastic
-unenthusiastically
-unenviable
-unequal
-unequalled
-unequally
-unequivocal
-unequivocally
-unergonomic
-unerring
-unerringly
-unescorted
-unestablished
-unethical
-unethically
-unevaluated
-uneven
-unevenly
-unevenness
-uneventful
-uneventfully
-unexacting
-unexamined
-unexceptionable
-unexceptional
-unexcited
-unexciting
-unexpanded
-unexpected
-unexpectedly
-unexpectedness
-unexpired
-unexplainable
-unexplained
-unexploded
-unexploited
-unexplored
-unexpressed
-unexpurgated
-unfailing
-unfailingly
-unfair
-unfairly
-unfairness
-unfaithful
-unfaithfulness
-unfalsifiable
-unfamiliar
-unfamiliarity
-unfancied
-unfashionable
-unfashionably
-unfasten
-unfastened
-unfastening
-unfathomable
-unfathomed
-unfatigued
-unfavourable
-unfavourably
-unfavoured
-unfeasible
-unfeasibly
-unfed
-unfeeling
-unfeelingly
-unfeigned
-unfelt
-unfeminine
-unfenced
-unfertilised
-unfetchable
-unfettered
-unfilled
-unfinished
-unfired
-unfirm
-unfit
-unfitness
-unfits
-unfitting
-unfix
-unfixed
-unflagging
-unflattering
-unflawed
-unfledged
-unflinching
-unflinchingly
-unfocused
-unfocussed
-unfold
-unfolded
-unfolding
-unfolds
-unforced
-unfordable
-unforeseeable
-unforeseen
-unforgettable
-unforgivable
-unforgivably
-unforgiven
-unforgiving
-unformed
-unforthcoming
-unfortunate
-unfortunately
-unfortunates
-unfounded
-unfreeze
-unfreezing
-unfrequented
-unfriendlier
-unfriendliest
-unfriendliness
-unfriendly
-unfrozen
-unfruitful
-unfulfillable
-unfulfilled
-unfunded
-unfunny
-unfurl
-unfurled
-unfurling
-unfurls
-unfurnished
-unfussy
-ungainly
-ungenerous
-ungenerously
-ungentlemanly
-ungerminated
-unglamorous
-unglazed
-ungodly
-ungovernable
-ungoverned
-ungraceful
-ungracious
-ungraciously
-ungrammatical
-ungrateful
-ungratefully
-ungrounded
-unguarded
-unguessable
-unguided
-ungulates
-unhampered
-unhand
-unhandy
-unhappier
-unhappiest
-unhappily
-unhappiness
-unhappy
-unharmed
-unhealthier
-unhealthiest
-unhealthily
-unhealthy
-unheard
-unheated
-unheeded
-unhelpful
-unhelpfully
-unheralded
-unheroic
-unhesitating
-unhesitatingly
-unhidden
-unhindered
-unhinge
-unhinged
-unholy
-unhonoured
-unhook
-unhooked
-unhooks
-unhoped
-unhuman
-unhurried
-unhurriedly
-unhurt
-unhygienic
-unhyphenated
-unicameral
-unicellular
-unicorn
-unicorns
-unicycle
-unicycles
-unicyclist
-unicyclists
-unideal
-unidentifiable
-unidentified
-unidirectional
-unifiable
-unification
-unified
-unifier
-unifies
-uniform
-uniformed
-uniformity
-uniformly
-uniforms
-unify
-unifying
-unilateral
-unilateralism
-unilateralist
-unilaterally
-unillustrated
-unimaginable
-unimaginably
-unimaginative
-unimaginatively
-unimagined
-unimpaired
-unimpeachable
-unimpeded
-unimplementable
-unimplemented
-unimportance
-unimportant
-unimpressed
-unimpressive
-unimproved
-unincorporated
-uninfected
-uninfluenced
-uninformative
-uninformatively
-uninformed
-uninhabitable
-uninhabited
-uninhibited
-uninhibitedly
-uninitialised
-uninitiated
-uninjured
-uninspired
-uninspiring
-uninsulated
-uninsurable
-uninsured
-unintellectual
-unintelligent
-unintelligible
-unintended
-unintentional
-unintentionally
-uninterested
-uninterestedly
-uninteresting
-uninterpretable
-uninterpreted
-uninterrupted
-uninterruptedly
-unintuitive
-uninvented
-uninvited
-uninviting
-uninvolved
-union
-unionisation
-unionised
-unionism
-unionist
-unionists
-unions
-unipolar
-unique
-uniquely
-uniqueness
-unisex
-unison
-unisons
-unissued
-unit
-unitary
-unite
-united
-unites
-unities
-uniting
-units
-unity
-universal
-universalism
-universalist
-universality
-universally
-universals
-universe
-universes
-universities
-university
-unjam
-unjammed
-unjamming
-unjaundiced
-unjust
-unjustifiable
-unjustifiably
-unjustified
-unjustly
-unjustness
-unkempt
-unkept
-unkind
-unkindest
-unkindly
-unkindness
-unknightly
-unknowable
-unknowing
-unknowingly
-unknown
-unknowns
-unlabelled
-unlace
-unlaced
-unlacing
-unladen
-unladylike
-unlamented
-unlatching
-unlawful
-unlawfully
-unlawfulness
-unleaded
-unlearn
-unlearned
-unleash
-unleashed
-unleashes
-unleashing
-unleavened
-unless
-unlicensed
-unlike
-unlikeable
-unlikeliest
-unlikelihood
-unlikeliness
-unlikely
-unlimited
-unlined
-unlink
-unlinked
-unlisted
-unlit
-unload
-unloaded
-unloading
-unloads
-unlock
-unlocked
-unlocking
-unlocks
-unloose
-unlovable
-unloved
-unlovely
-unloving
-unluckier
-unluckiest
-unluckily
-unlucky
-unmade
-unmagnified
-unmaintainable
-unmaintained
-unmaking
-unmanageable
-unmanageably
-unmanly
-unmanned
-unmannerly
-unmapped
-unmarked
-unmarried
-unmask
-unmasked
-unmasks
-unmatchable
-unmatched
-unmeasurable
-unmechanised
-unmeetable
-unmelodious
-unmemorable
-unmemorised
-unmentionable
-unmentionables
-unmentioned
-unmercifully
-unmerited
-unmet
-unmissable
-unmistakable
-unmistakably
-unmistakeable
-unmistakeably
-unmitigated
-unmixed
-unmnemonic
-unmodifiable
-unmodified
-unmolested
-unmonitored
-unmotivated
-unmounted
-unmoved
-unmoving
-unmusical
-unmusically
-unmutilated
-unmuzzled
-unnamed
-unnatural
-unnaturally
-unnavigable
-unnecessarily
-unnecessary
-unneeded
-unnerve
-unnerved
-unnerving
-unnervingly
-unnoted
-unnoticeable
-unnoticed
-unnumbered
-unobjectionable
-unobliging
-unobservable
-unobservant
-unobserved
-unobstructed
-unobtainable
-unobtrusive
-unobtrusively
-unoccupied
-unofficial
-unofficially
-unopened
-unopposed
-unoptimised
-unordered
-unorganised
-unoriginal
-unoriginality
-unorthodox
-unorthodoxy
-unowned
-unpack
-unpacked
-unpackers
-unpacking
-unpacks
-unpaid
-unpainted
-unpaired
-unpalatable
-unparalleled
-unpardonable
-unparodied
-unpasted
-unpasteurised
-unpatriotic
-unpaved
-unpeeled
-unperceived
-unpersonalised
-unpersuaded
-unpersuasive
-unperturbed
-unphysical
-unpick
-unpicked
-unpicking
-unplaced
-unplanned
-unplayability
-unplayable
-unpleasant
-unpleasantly
-unpleasantness
-unpleasing
-unploughed
-unplug
-unplugged
-unplugging
-unpoetical
-unpolished
-unpolluted
-unpopular
-unpopularity
-unpopulated
-unportable
-unpractical
-unpractised
-unprecedented
-unprecedentedly
-unpredictability
-unpredictable
-unpredictably
-unpredicted
-unprejudiced
-unpremeditated
-unprepared
-unpreparedness
-unprepossessing
-unpressurised
-unpretending
-unpretentious
-unprincipled
-unprintable
-unprinted
-unprivileged
-unproblematic
-unprocessed
-unproductive
-unprofessional
-unprofitable
-unprofitably
-unpromising
-unprompted
-unpronounceable
-unpronounced
-unprotected
-unprovable
-unproved
-unproven
-unprovoked
-unpublicised
-unpublishable
-unpublished
-unpunctual
-unpunctuality
-unpunished
-unqualified
-unquantifiable
-unquantified
-unquenchable
-unquestionable
-unquestionably
-unquestioned
-unquestioning
-unquestioningly
-unquiet
-unquote
-unquoted
-unraisable
-unravel
-unravelled
-unravelling
-unravels
-unreachable
-unreached
-unread
-unreadability
-unreadable
-unready
-unreal
-unrealisable
-unrealised
-unrealistic
-unrealistically
-unreality
-unreasonable
-unreasonableness
-unreasonably
-unreasoned
-unreasoning
-unreceived
-unreceptive
-unrecognisable
-unrecognisably
-unrecognised
-unrecommended
-unreconciled
-unreconstructed
-unrecorded
-unrecoverable
-unredeemed
-unreduced
-unrefereed
-unreferenced
-unreferencing
-unrefined
-unreflected
-unreformed
-unrefreshed
-unrefrigerated
-unregarded
-unregenerate
-unregistered
-unregulated
-unrehearsed
-unrelated
-unreleasable
-unreleased
-unrelenting
-unrelentingly
-unreliability
-unreliable
-unreliably
-unrelieved
-unremarkable
-unremarked
-unremembered
-unremitting
-unremittingly
-unrepairable
-unrepeatability
-unrepeatable
-unrepeated
-unrepentant
-unrepentantly
-unreported
-unrepresentable
-unrepresentative
-unrepresented
-unreproducible
-unrequested
-unrequited
-unreserved
-unreservedly
-unresisting
-unresistingly
-unresolvable
-unresolved
-unresponsive
-unresponsiveness
-unrest
-unrestrained
-unrestricted
-unrests
-unrevealed
-unrevealing
-unrevised
-unrewarded
-unrewarding
-unriddle
-unripe
-unrivalled
-unroll
-unrolled
-unrolling
-unromantic
-unruffled
-unruliness
-unruly
-unsaddled
-unsafe
-unsafely
-unsafeness
-unsaid
-unsaleable
-unsalted
-unsanitary
-unsatisfactorily
-unsatisfactoriness
-unsatisfactory
-unsatisfiable
-unsatisfied
-unsatisfying
-unsaturated
-unsaved
-unsavory
-unsavoury
-unscaled
-unscathed
-unscheduled
-unscientific
-unscramble
-unscrambled
-unscrambles
-unscrambling
-unscratched
-unscrew
-unscrewed
-unscrewing
-unscripted
-unscrupulous
-unseal
-unsealable
-unsealed
-unsealing
-unseasonable
-unseasonably
-unseasonal
-unseat
-unseated
-unseaworthiness
-unsecured
-unseeded
-unseeing
-unseeingly
-unseemly
-unseen
-unselected
-unselfconscious
-unselfconsciously
-unselfish
-unselfishly
-unselfishness
-unsellable
-unsensational
-unsent
-unsentimental
-unserviceable
-unserviced
-unset
-unsettle
-unsettled
-unsettling
-unshackled
-unshaded
-unshakable
-unshakeable
-unshaken
-unshaped
-unshapen
-unsharable
-unshared
-unshaved
-unshaven
-unsheathed
-unshielded
-unshockable
-unshod
-unshorn
-unshrinking
-unsighted
-unsightly
-unsigned
-unsimplified
-unsinkable
-unskilful
-unskilled
-unsliced
-unsmiling
-unsmilingly
-unsmooth
-unsociable
-unsocial
-unsoiled
-unsold
-unsolder
-unsolicited
-unsolvable
-unsolved
-unsophisticated
-unsophistication
-unsorted
-unsought
-unsound
-unsoundness
-unspanned
-unspeakable
-unspeakably
-unspecialised
-unspecific
-unspecified
-unspectacular
-unspent
-unspoiled
-unspoilt
-unspoken
-unsporting
-unstable
-unstack
-unstacked
-unstacking
-unstained
-unstamped
-unstated
-unsteadily
-unsteadiness
-unsteady
-unsterilised
-unsticking
-unstimulated
-unstinting
-unstintingly
-unstirred
-unstoppable
-unstoppably
-unstopped
-unstrapped
-unstressed
-unstretchable
-unstructured
-unstuck
-unsubdued
-unsubsidised
-unsubstantial
-unsubstantiated
-unsubstituted
-unsubtle
-unsubtly
-unsuccessful
-unsuccessfully
-unsuitability
-unsuitable
-unsuitableness
-unsuitably
-unsuited
-unsullied
-unsung
-unsupervised
-unsupportable
-unsupported
-unsuppressed
-unsure
-unsureness
-unsurfaced
-unsurpassable
-unsurpassed
-unsurprised
-unsurprising
-unsurprisingly
-unsurvivable
-unsuspected
-unsuspecting
-unsustainable
-unswappable
-unsweetened
-unswerving
-unswervingly
-unsympathetic
-unsympathetically
-unsystematic
-untactful
-untagged
-untainted
-untalented
-untamed
-untangle
-untangled
-untangling
-untapped
-untarnished
-untasted
-untaught
-untaxed
-untaxing
-untempered
-untenability
-untenable
-untended
-unterminated
-untestable
-untested
-untethered
-untextured
-unthinkable
-unthinkably
-unthinking
-unthinkingly
-unthoughtful
-untidier
-untidiest
-untidily
-untidiness
-untidy
-untie
-untied
-unties
-until
-untimely
-untiring
-untitled
-unto
-untold
-untouchable
-untouchables
-untouched
-untoward
-untraceable
-untraced
-untrained
-untrammelled
-untransformed
-untranslatable
-untranslated
-untransportable
-untrappable
-untreatable
-untreated
-untried
-untrodden
-untroubled
-untrue
-untrusted
-untrustworthy
-untrusty
-untruth
-untruthful
-untruthfully
-untruths
-unturned
-untutored
-untwist
-untwisted
-untying
-untyped
-untypical
-untypically
-unusable
-unusably
-unused
-unusual
-unusually
-unutterable
-unutterably
-unvalidated
-unvalued
-unvanquished
-unvarnished
-unvarying
-unvaryingly
-unveil
-unveiled
-unveiling
-unveils
-unventilated
-unverifiable
-unverified
-unversed
-unvisitable
-unvisited
-unvoiced
-unwanted
-unwarily
-unwarmed
-unwarned
-unwarrantable
-unwarrantably
-unwarranted
-unwary
-unwashed
-unwatchable
-unwatched
-unwavering
-unwaveringly
-unweaned
-unwearied
-unweary
-unwed
-unwedded
-unwedge
-unweighted
-unwelcome
-unwelcoming
-unwell
-unwholesome
-unwieldy
-unwilling
-unwillingly
-unwillingness
-unwind
-unwindable
-unwinding
-unwinds
-unwisdom
-unwise
-unwisely
-unwisest
-unwitting
-unwittingly
-unwontedly
-unworkability
-unworkable
-unworldly
-unworn
-unworried
-unworthily
-unworthiness
-unworthy
-unwound
-unwounded
-unwrap
-unwrapped
-unwrapping
-unwraps
-unwritten
-unyielding
-unzip
-unzipped
-unzipping
-unzips
-up
-upbeat
-upbraid
-upbraided
-upbraiding
-upbraids
-upbringing
-upbringings
-upcast
-upcoming
-updatability
-update
-updated
-updater
-updates
-updating
-upended
-upfield
-upfront
-upgradable
-upgrade
-upgradeable
-upgraded
-upgrades
-upgrading
-upgradings
-upheaval
-upheavals
-upheld
-uphill
-uphold
-upholder
-upholders
-upholding
-upholds
-upholster
-upholstered
-upholsterer
-upholsterers
-upholstery
-upkeep
-upland
-uplands
-uplift
-uplifted
-uplifting
-uplifts
-uplink
-uplinks
-upload
-uploaded
-uploads
-upmarket
-upmost
-upon
-upped
-upper
-uppercase
-upperclass
-uppercut
-uppermost
-uppers
-upraised
-uprate
-uprated
-uprating
-upright
-uprightly
-uprightness
-uprights
-uprise
-uprising
-uprisings
-upriver
-uproar
-uproarious
-uproariously
-uproars
-uproo
-uproot
-uprooted
-uprooting
-uproots
-ups
-upset
-upsets
-upsetting
-upshot
-upside
-upsidedown
-upsilon
-upstage
-upstaged
-upstages
-upstaging
-upstairs
-upstanding
-upstart
-upstarts
-upstream
-upsurge
-upsurges
-upswing
-uptake
-upthrust
-uptotheminute
-uptown
-upturn
-upturned
-upward
-upwardly
-upwards
-upwind
-uranium
-uranus
-urban
-urbane
-urbanely
-urbanisation
-urbanise
-urbanised
-urbanising
-urbanites
-urbanity
-urchin
-urchins
-urea
-ureter
-ureters
-urethane
-urethra
-urethrae
-urethral
-urethras
-urethritis
-urge
-urged
-urgency
-urgent
-urgently
-urges
-urging
-urgings
-urinary
-urine
-urn
-urns
-urologist
-ursine
-urticaria
-uruguay
-us
-usability
-usable
-usage
-usages
-usances
-use
-useable
-used
-useful
-usefully
-usefulness
-useless
-uselessly
-uselessness
-user
-userfriendliness
-userfriendly
-users
-uses
-usher
-ushered
-usherette
-ushering
-ushers
-using
-usual
-usually
-usurer
-usurers
-usurious
-usurp
-usurpation
-usurped
-usurper
-usurping
-usury
-utah
-utensil
-utensils
-uteri
-uterine
-uterus
-utilisation
-utilise
-utilised
-utilises
-utilising
-utilitarian
-utilitarianism
-utilitarians
-utilities
-utility
-utmost
-utopia
-utopian
-utopians
-utopias
-utter
-utterance
-utterances
-uttered
-utterer
-uttering
-utterly
-uttermost
-utters
-uturns
-uvula
-uvular
-vacancies
-vacancy
-vacant
-vacantly
-vacate
-vacated
-vacates
-vacating
-vacation
-vacations
-vaccinate
-vaccinated
-vaccinating
-vaccination
-vaccinations
-vaccine
-vaccines
-vacillate
-vacillating
-vacillation
-vacillations
-vacua
-vacuity
-vacuole
-vacuoles
-vacuous
-vacuously
-vacuum
-vacuums
-vaduz
-vagabond
-vagabonds
-vagrancy
-vagrant
-vagrants
-vague
-vaguely
-vagueness
-vaguer
-vaguest
-vain
-vainer
-vainest
-vainglorious
-vainglory
-vainly
-valance
-vale
-valediction
-valedictory
-valence
-valencies
-valency
-valentine
-vales
-valet
-valets
-valhalla
-valiant
-valiantly
-valid
-validate
-validated
-validates
-validating
-validation
-validity
-validly
-valise
-valley
-valleys
-valour
-valuable
-valuables
-valuation
-valuations
-value
-valueadded
-valued
-valueformoney
-valueless
-valuer
-valuers
-values
-valuing
-valuta
-valve
-valves
-vamp
-vamped
-vamper
-vamping
-vampire
-vampires
-vamps
-van
-vanadium
-vandal
-vandalise
-vandalised
-vandalising
-vandalism
-vandals
-vane
-vaned
-vanes
-vangogh
-vanguard
-vanilla
-vanish
-vanished
-vanishes
-vanishing
-vanishingly
-vanities
-vanity
-vanquish
-vanquished
-vanquishing
-vans
-vantage
-vapid
-vaporisation
-vaporise
-vaporised
-vaporising
-vaporous
-vapour
-vapours
-variability
-variable
-variables
-variably
-variance
-variances
-variant
-variants
-variate
-variates
-variation
-variational
-variations
-varicose
-varied
-variegated
-varies
-varietal
-varieties
-variety
-various
-variously
-varnish
-varnished
-varnishes
-varnishing
-varsity
-vary
-varying
-vascular
-vase
-vasectomies
-vasectomy
-vaseline
-vases
-vassal
-vassalage
-vassals
-vast
-vaster
-vastly
-vastness
-vat
-vatican
-vats
-vault
-vaulted
-vaulting
-vaults
-vaunted
-vaunting
-veal
-vector
-vectored
-vectoring
-vectorisation
-vectorised
-vectors
-veer
-veered
-veering
-veers
-veg
-vegan
-vegans
-vegetable
-vegetables
-vegetarian
-vegetarianism
-vegetarians
-vegetate
-vegetated
-vegetating
-vegetation
-vegetational
-vegetative
-vegetive
-veggies
-vehemence
-vehement
-vehemently
-vehicle
-vehicles
-vehicular
-veil
-veiled
-veiling
-veils
-vein
-veined
-veins
-velar
-veld
-veldt
-vellum
-velocipede
-velocities
-velocity
-velodrome
-velour
-velum
-velvet
-velveteen
-velveteens
-velvets
-velvety
-venal
-venality
-vend
-venders
-vendetta
-vendettas
-vending
-vendor
-vendors
-vends
-veneer
-veneered
-veneers
-venerable
-venerate
-venerated
-venerates
-venerating
-veneration
-venereal
-venetian
-vengeance
-vengeful
-vengefully
-venial
-venice
-venison
-venom
-venomous
-venomously
-venoms
-venose
-venous
-vent
-vented
-ventilate
-ventilated
-ventilating
-ventilation
-ventilator
-ventilators
-venting
-ventings
-ventral
-ventrally
-ventricle
-ventricles
-ventricular
-ventriloquism
-ventriloquist
-ventriloquists
-ventriloquy
-vents
-venture
-ventured
-venturer
-ventures
-venturesome
-venturing
-venue
-venues
-venus
-veracity
-veranda
-verandah
-verandahs
-verandas
-verb
-verbal
-verbalise
-verbally
-verbals
-verbatim
-verbiage
-verbose
-verbosely
-verboseness
-verbosity
-verbs
-verdant
-verdict
-verdicts
-verdigris
-verdure
-verge
-verged
-verger
-verges
-verging
-verifiability
-verifiable
-verification
-verifications
-verified
-verifier
-verifiers
-verifies
-verify
-verifying
-verily
-verisimilitude
-veritable
-veritably
-verities
-verity
-vermilion
-vermin
-verminous
-vernacular
-vernal
-vernier
-verona
-versatile
-versatility
-verse
-versed
-verses
-versicle
-versification
-versifier
-version
-versions
-versus
-vertebra
-vertebrae
-vertebral
-vertebrate
-vertebrates
-vertex
-vertical
-verticality
-vertically
-verticals
-vertices
-vertiginous
-vertigo
-verve
-very
-vesicle
-vesicles
-vesicular
-vespers
-vessel
-vessels
-vest
-vestal
-vested
-vestibular
-vestibule
-vestibules
-vestige
-vestiges
-vestigial
-vesting
-vestment
-vestments
-vestry
-vests
-vesuvius
-vet
-veteran
-veterans
-veterinary
-veto
-vetoed
-vetoing
-vets
-vetted
-vetting
-vex
-vexation
-vexations
-vexatious
-vexed
-vexes
-vexing
-via
-viability
-viable
-viably
-viaduct
-viaducts
-vial
-vials
-vibes
-vibrancy
-vibrant
-vibrantly
-vibrate
-vibrated
-vibrates
-vibrating
-vibration
-vibrational
-vibrationally
-vibrations
-vibrato
-vibrator
-vibrators
-vibratory
-vicar
-vicarage
-vicarages
-vicarious
-vicariously
-vicars
-vice
-vicechancellor
-vicechancellors
-vicepresidency
-vicepresident
-vicepresidential
-vicepresidents
-viceroy
-viceroys
-vices
-vicinities
-vicinity
-vicious
-viciously
-viciousness
-vicissitude
-vicissitudes
-victim
-victimisation
-victimise
-victimised
-victimises
-victimising
-victimless
-victims
-victor
-victoria
-victories
-victorious
-victoriously
-victors
-victory
-victualling
-victuals
-video
-videoconferencing
-videodisc
-videoed
-videoing
-videophone
-videos
-videotape
-videotaped
-videotapes
-videotaping
-vie
-vied
-vienna
-vier
-vies
-view
-viewable
-viewed
-viewer
-viewers
-viewfinder
-viewfinders
-viewing
-viewings
-viewpoint
-viewpoints
-views
-vigil
-vigilance
-vigilant
-vigilante
-vigilantes
-vigilantly
-vigils
-vignette
-vignettes
-vigorous
-vigorously
-vigour
-viking
-vikings
-vile
-vilely
-vileness
-viler
-vilest
-vilification
-vilified
-vilify
-vilifying
-villa
-village
-villager
-villagers
-villages
-villain
-villainous
-villains
-villainy
-villas
-vim
-vims
-vindicate
-vindicated
-vindicates
-vindicating
-vindication
-vindictive
-vindictively
-vindictiveness
-vine
-vinegar
-vinegars
-vines
-vineyard
-vineyards
-vino
-vintage
-vintages
-vintner
-vinyl
-vinyls
-viol
-viola
-violas
-violate
-violated
-violates
-violating
-violation
-violations
-violator
-violators
-violence
-violent
-violently
-violet
-violets
-violin
-violinist
-violinists
-violins
-violist
-viper
-vipers
-virago
-viral
-virgil
-virgin
-virginal
-virginia
-virginity
-virgins
-virile
-virility
-virology
-virtual
-virtually
-virtue
-virtues
-virtuosi
-virtuosic
-virtuosity
-virtuoso
-virtuous
-virtuously
-virulence
-virulent
-virulently
-virus
-viruses
-visa
-visage
-visas
-viscose
-viscosity
-viscount
-viscounts
-viscous
-vise
-visibilities
-visibility
-visible
-visibly
-vision
-visionaries
-visionary
-visions
-visit
-visitable
-visitant
-visitation
-visitations
-visited
-visiting
-visitor
-visitors
-visits
-visor
-visors
-vista
-vistas
-visual
-visualisation
-visualise
-visualised
-visualising
-visually
-visuals
-vital
-vitalise
-vitality
-vitally
-vitals
-vitamin
-vitamins
-vitiate
-vitiated
-vitiates
-vitiating
-vitreous
-vitrified
-vitriol
-vitriolic
-vituperate
-vituperation
-vituperative
-viva
-vivacious
-vivaciously
-vivacity
-vivid
-vividly
-vividness
-vivified
-vivisected
-vivisection
-vivisectionist
-vivisectionists
-vixen
-vixens
-vizier
-vocabularies
-vocabulary
-vocal
-vocalisation
-vocalisations
-vocalise
-vocalised
-vocalising
-vocalist
-vocalists
-vocally
-vocals
-vocation
-vocational
-vocationally
-vocations
-vocative
-vociferous
-vociferously
-vodka
-vogue
-voice
-voiced
-voiceless
-voices
-voicing
-voicings
-void
-voidable
-voided
-voiding
-voids
-voile
-volatile
-volatiles
-volatility
-volcanic
-volcanically
-volcanism
-volcano
-vole
-voles
-volga
-volition
-volley
-volleyball
-volleyed
-volleying
-volleys
-volt
-voltage
-voltages
-voltmeter
-volts
-volubility
-voluble
-volubly
-volume
-volumes
-volumetric
-voluminous
-voluntarily
-voluntary
-volunteer
-volunteered
-volunteering
-volunteers
-voluptuous
-voluptuously
-voluptuousness
-volute
-vomit
-vomited
-vomiting
-vomits
-voodoo
-voracious
-voraciously
-voracity
-vortex
-vortexes
-vortices
-vorticity
-vote
-voted
-voteless
-voter
-voters
-votes
-voting
-votive
-vouch
-vouched
-voucher
-vouchers
-vouches
-vouchsafe
-vouchsafed
-vouchsafing
-vow
-vowed
-vowel
-vowels
-vowing
-vows
-voyage
-voyaged
-voyager
-voyagers
-voyages
-voyaging
-voyeur
-voyeurism
-voyeuristic
-voyeurs
-vulcan
-vulcanise
-vulcanised
-vulcanism
-vulcanologist
-vulgar
-vulgarities
-vulgarity
-vulgarly
-vulgate
-vulnerabilities
-vulnerability
-vulnerable
-vulpine
-vulture
-vultures
-vulva
-vying
-wackier
-wacky
-wad
-wadding
-waddle
-waddled
-waddles
-waddling
-wade
-waded
-wader
-waders
-wades
-wadi
-wading
-wadings
-wadis
-wads
-wafer
-wafers
-waffle
-waffled
-waffles
-waft
-wafted
-wafting
-wafts
-wafture
-wag
-wage
-waged
-wager
-wagered
-wagerer
-wagers
-wages
-wagged
-waggery
-wagging
-waggish
-waggishly
-waggle
-waggled
-waggles
-waggling
-waggly
-waggoners
-waggons
-waging
-wagon
-wagons
-wags
-wagtail
-wagtails
-waif
-waifs
-wail
-wailed
-wailer
-wailing
-wails
-wainscot
-wainscoting
-waist
-waistband
-waistcoat
-waistcoats
-waistline
-waists
-wait
-waited
-waiter
-waiters
-waiting
-waitress
-waitresses
-waits
-waive
-waived
-waiver
-waivers
-waives
-waiving
-wake
-waked
-wakeful
-wakefulness
-waken
-wakened
-wakening
-wakens
-wakes
-waking
-wales
-walk
-walkable
-walkabout
-walkabouts
-walked
-walker
-walkers
-walkietalkie
-walkietalkies
-walking
-walkout
-walkover
-walks
-walkway
-walkways
-wall
-wallabies
-wallaby
-wallchart
-walled
-wallet
-wallets
-wallflower
-wallflowers
-walling
-wallop
-wallow
-wallowed
-wallowing
-wallows
-wallpaper
-wallpapering
-wallpapers
-walls
-walltowall
-walnut
-walnuts
-walrus
-walruses
-waltz
-waltzed
-waltzes
-waltzing
-wan
-wand
-wander
-wandered
-wanderer
-wanderers
-wandering
-wanderings
-wanderlust
-wanders
-wands
-wane
-waned
-wanes
-waning
-wanly
-want
-wanted
-wanting
-wanton
-wantonly
-wantonness
-wants
-wapiti
-wapitis
-war
-warble
-warbled
-warbler
-warblers
-warbles
-warbling
-ward
-warded
-warden
-wardens
-warder
-warders
-warding
-wardrobe
-wardrobes
-wards
-wardship
-ware
-warehouse
-warehoused
-warehouseman
-warehousemen
-warehouses
-warehousing
-wares
-warfare
-warhead
-warheads
-warhorse
-warhorses
-wariest
-warily
-wariness
-waring
-warlike
-warlock
-warlocks
-warlord
-warlords
-warm
-warmblooded
-warmed
-warmer
-warmers
-warmest
-warmhearted
-warmheartedness
-warming
-warmish
-warmly
-warmness
-warmonger
-warms
-warmth
-warmup
-warn
-warned
-warners
-warning
-warningly
-warnings
-warns
-warp
-warpaint
-warpath
-warped
-warping
-warplanes
-warps
-warrant
-warranted
-warranties
-warranting
-warrants
-warranty
-warred
-warren
-warrens
-warring
-warrior
-warriors
-wars
-warsaw
-warship
-warships
-wart
-warthog
-warthogs
-wartime
-warts
-warty
-wary
-was
-wash
-washable
-washbasin
-washbasins
-washboard
-washday
-washed
-washer
-washers
-washerwoman
-washerwomen
-washes
-washing
-washings
-washington
-washout
-washstand
-washy
-wasp
-waspish
-waspishly
-wasps
-waspwaisted
-wast
-wastage
-wastages
-waste
-wasted
-wasteful
-wastefully
-wastefulness
-wasteland
-wastelands
-wastepaper
-waster
-wasters
-wastes
-wasting
-wastings
-wastrel
-watch
-watchable
-watchdog
-watchdogs
-watched
-watcher
-watchers
-watches
-watchful
-watchfully
-watchfulness
-watching
-watchmaker
-watchmakers
-watchman
-watchmen
-watchtower
-watchtowers
-watchword
-watchwords
-water
-waterbed
-waterbeds
-watercolour
-watercolourists
-watercolours
-watercooled
-watercourse
-watercourses
-watercress
-watered
-waterfall
-waterfalls
-waterfowl
-waterfront
-waterglass
-waterhole
-waterholes
-watering
-waterless
-waterline
-waterlogged
-waterloo
-waterman
-watermark
-watermarks
-watermelon
-watermelons
-watermen
-watermill
-watermills
-waterproof
-waterproofed
-waterproofing
-waterproofs
-waterresistant
-waters
-watershed
-watersheds
-waterside
-waterskiing
-watersoluble
-waterspouts
-watertable
-watertight
-waterway
-waterways
-waterwheel
-waterwheels
-waterworks
-watery
-watt
-wattage
-wattle
-watts
-wave
-waveband
-wavebands
-waved
-waveform
-waveforms
-wavefront
-waveguide
-waveguides
-wavelength
-wavelengths
-wavelet
-wavelets
-wavelike
-waver
-wavered
-waverers
-wavering
-wavers
-waves
-wavier
-waviest
-wavily
-waving
-wavings
-wavy
-wax
-waxed
-waxen
-waxes
-waxing
-waxpaper
-waxwork
-waxworks
-waxy
-way
-wayout
-ways
-wayside
-wayward
-waywardly
-waywardness
-we
-weak
-weaken
-weakened
-weakening
-weakens
-weaker
-weakest
-weakish
-weakkneed
-weakling
-weaklings
-weakly
-weakminded
-weakness
-weaknesses
-weal
-wealth
-wealthier
-wealthiest
-wealthy
-wean
-weaned
-weaning
-weanling
-weans
-weapon
-weaponry
-weapons
-wear
-wearable
-wearer
-wearers
-wearied
-wearier
-wearies
-weariest
-wearily
-weariness
-wearing
-wearisome
-wears
-weary
-wearying
-wearyingly
-weasel
-weaselling
-weaselly
-weasels
-weather
-weatherbeaten
-weatherbound
-weathercock
-weathercocks
-weathered
-weathering
-weatherman
-weathermen
-weatherproof
-weathers
-weathervane
-weatherworn
-weave
-weaved
-weaver
-weavers
-weaves
-weaving
-weavings
-web
-webbed
-webbing
-webby
-webfoot
-webs
-website
-wed
-wedded
-wedding
-weddings
-wedge
-wedged
-wedges
-wedging
-wedlock
-weds
-wee
-weed
-weeded
-weedier
-weediest
-weeding
-weedkiller
-weedkillers
-weeds
-weedy
-week
-weekday
-weekdays
-weekend
-weekenders
-weekends
-weeklies
-weekly
-weeks
-ween
-weeny
-weep
-weeper
-weeping
-weepings
-weeps
-weepy
-weevil
-weevils
-weigh
-weighbridge
-weighed
-weighing
-weighs
-weight
-weighted
-weightier
-weightiest
-weightily
-weighting
-weightings
-weightless
-weightlessly
-weightlessness
-weightlifter
-weightlifters
-weightlifting
-weights
-weighty
-weir
-weird
-weirder
-weirdest
-weirdly
-weirdness
-weirdo
-weirs
-welcome
-welcomed
-welcomer
-welcomes
-welcoming
-weld
-welded
-welder
-welders
-welding
-welds
-welfare
-well
-welladjusted
-wellbalanced
-wellbehaved
-wellbeing
-wellbeloved
-wellborn
-wellbred
-wellbuilt
-wellchosen
-wellconnected
-welldefined
-welldeserved
-welldesigned
-welldeveloped
-welldisposed
-welldressed
-wellearned
-welled
-welleducated
-wellendowed
-wellequipped
-wellestablished
-wellfed
-wellformed
-wellfounded
-wellgrounded
-wellhead
-wellinformed
-welling
-wellington
-wellingtons
-wellintentioned
-wellkept
-wellknown
-wellliked
-wellloved
-wellmade
-wellmannered
-wellmarked
-wellmatched
-wellmeaning
-wellmeant
-welloff
-wellordered
-wellorganised
-wellpaid
-wellplaced
-wellprepared
-wellpreserved
-wellread
-wellreceived
-wellrounded
-wells
-wellspoken
-wellstructured
-wellsupported
-welltaken
-wellthoughtout
-welltimed
-welltodo
-welltried
-wellused
-wellwisher
-wellwishers
-wellworn
-welly
-welsh
-welshman
-welt
-welter
-weltering
-welters
-welterweight
-welts
-wench
-wenches
-wend
-wended
-wending
-wends
-went
-wept
-were
-werewolf
-werewolves
-west
-westbound
-westerly
-western
-westerner
-westerners
-westernisation
-westernised
-westernmost
-westerns
-westward
-westwards
-wet
-wether
-wetland
-wetlands
-wetly
-wetness
-wets
-wetsuit
-wetsuits
-wettable
-wetted
-wetter
-wettest
-wetting
-whack
-whacked
-whacker
-whacko
-whacks
-whale
-whalebone
-whaler
-whalers
-whales
-whaling
-wham
-whap
-wharf
-wharfs
-wharves
-what
-whatever
-whatnot
-whatsoever
-wheals
-wheat
-wheatears
-wheaten
-wheatgerm
-wheats
-whee
-wheedle
-wheedled
-wheedling
-wheel
-wheelbarrow
-wheelbarrows
-wheelbase
-wheelchair
-wheelchairs
-wheeled
-wheeler
-wheelers
-wheelhouse
-wheelie
-wheeling
-wheels
-wheelwright
-wheelwrights
-wheeze
-wheezed
-wheezes
-wheezing
-wheezy
-whelk
-whelked
-whelks
-whelp
-when
-whence
-whenever
-where
-whereabouts
-whereas
-whereby
-wherefore
-wherefores
-wherein
-whereof
-whereon
-wheresoever
-whereto
-whereupon
-wherever
-wherewith
-wherewithal
-wherry
-whet
-whether
-whetstone
-whetstones
-whetted
-whetting
-whey
-which
-whichever
-whiff
-whiffs
-while
-whiled
-whiles
-whiling
-whilst
-whim
-whimper
-whimpered
-whimpering
-whimpers
-whims
-whimsical
-whimsically
-whimsy
-whine
-whined
-whines
-whining
-whinnied
-whinny
-whinnying
-whip
-whipcord
-whiplash
-whipped
-whipper
-whippet
-whippets
-whipping
-whippy
-whips
-whir
-whirl
-whirled
-whirligig
-whirling
-whirlpool
-whirlpools
-whirls
-whirlwind
-whirlwinds
-whirr
-whirred
-whirring
-whisk
-whisked
-whisker
-whiskers
-whiskery
-whiskey
-whiskeys
-whiskies
-whisking
-whisks
-whisky
-whisper
-whispered
-whisperers
-whispering
-whisperings
-whispers
-whist
-whistle
-whistled
-whistler
-whistles
-whistling
-whists
-white
-whitebait
-whiteboards
-whitecollar
-whitely
-whiten
-whitened
-whitener
-whiteness
-whitening
-whitens
-whiter
-whites
-whitest
-whitewash
-whitewashed
-whitewashing
-whither
-whiting
-whitish
-whittle
-whittled
-whittling
-whizkids
-whizz
-whizzkid
-who
-whoa
-whodunit
-whodunnit
-whoever
-whole
-wholefood
-wholegrain
-wholehearted
-wholeheartedly
-wholemeal
-wholeness
-wholes
-wholesale
-wholesaler
-wholesalers
-wholesaling
-wholesome
-wholesomely
-wholesomeness
-wholewheat
-wholly
-whom
-whomever
-whomsoever
-whoop
-whooped
-whooping
-whoops
-whoosh
-whop
-whore
-whorehouse
-whores
-whoring
-whorled
-whorls
-whose
-whosoever
-why
-whys
-wick
-wicked
-wickedest
-wickedly
-wickedness
-wicker
-wickerwork
-wicket
-wicketkeeper
-wicketkeepers
-wicketkeeping
-wickets
-wicks
-wide
-wideeyed
-widely
-widen
-widened
-wideness
-widening
-widens
-wideopen
-wider
-wideranging
-wides
-widescreen
-widespread
-widest
-widgeon
-widget
-widow
-widowed
-widower
-widowers
-widowhood
-widows
-width
-widths
-wield
-wielded
-wielder
-wielding
-wields
-wife
-wifeless
-wifely
-wig
-wigeon
-wigeons
-wigging
-wiggle
-wiggled
-wiggler
-wiggles
-wiggling
-wigs
-wigwam
-wigwams
-wild
-wildcat
-wildcats
-wildebeest
-wilder
-wilderness
-wildernesses
-wildest
-wildeyed
-wildfire
-wildfires
-wildfowl
-wildlife
-wildly
-wildness
-wildoats
-wilds
-wile
-wiles
-wilful
-wilfully
-wilfulness
-wilier
-wiliest
-wiling
-will
-willed
-willing
-willingly
-willingness
-willow
-willows
-willowy
-willpower
-wills
-willynilly
-wilt
-wilted
-wilting
-wilts
-wily
-wimp
-wimple
-wimpy
-win
-wince
-winced
-winces
-winch
-winched
-winches
-winching
-wincing
-wind
-windbag
-windbags
-windbreak
-windcheater
-windcheaters
-winded
-winder
-winders
-windfall
-windfalls
-windier
-windiest
-windily
-winding
-windings
-windlass
-windless
-windmill
-windmills
-window
-windowed
-windowing
-windowless
-windows
-windowshop
-windowshopping
-windpipe
-winds
-windscreen
-windscreens
-windsock
-windsor
-windsurf
-windsurfer
-windsurfers
-windsurfing
-windswept
-windward
-windy
-wine
-wined
-wineglass
-wineglasses
-winemakers
-winery
-wines
-wineskin
-wing
-winged
-winger
-wingers
-winging
-wingless
-wings
-wingspan
-wining
-wink
-winked
-winker
-winkers
-winking
-winkle
-winkled
-winkles
-winks
-winnable
-winner
-winners
-winning
-winningly
-winnings
-winnow
-winnowing
-wins
-winsome
-winter
-wintered
-wintering
-winters
-wintertime
-wintery
-wintrier
-wintriest
-wintry
-wipe
-wiped
-wiper
-wipers
-wipes
-wiping
-wire
-wired
-wireless
-wirer
-wires
-wirier
-wiriest
-wiring
-wirings
-wiry
-wisdom
-wisdoms
-wise
-wisecracks
-wiseguys
-wisely
-wiser
-wisest
-wish
-wishbone
-wished
-wishes
-wishful
-wishfully
-wishing
-wishywashy
-wisp
-wisps
-wispy
-wistful
-wistfully
-wistfulness
-wit
-witch
-witchcraft
-witchdoctor
-witchdoctors
-witchery
-witches
-witchhunt
-witchhunts
-witchlike
-with
-withdraw
-withdrawal
-withdrawals
-withdrawing
-withdrawn
-withdraws
-withdrew
-wither
-withered
-withering
-witheringly
-withers
-withheld
-withhold
-withholding
-withholds
-within
-without
-withstand
-withstanding
-withstands
-withstood
-witless
-witness
-witnessed
-witnesses
-witnessing
-wits
-witter
-wittering
-witticism
-witticisms
-wittier
-wittiest
-wittily
-wittiness
-witting
-wittingly
-witty
-wives
-wizard
-wizardry
-wizards
-wizened
-woad
-wobble
-wobbled
-wobbler
-wobbles
-wobblier
-wobbliest
-wobbling
-wobbly
-wodan
-wodge
-woe
-woebegone
-woeful
-woefully
-woes
-wok
-woke
-woken
-woks
-wold
-wolds
-wolf
-wolfcubs
-wolfed
-wolfhound
-wolfhounds
-wolfish
-wolfishly
-wolfwhistles
-wolves
-woman
-womanhood
-womanise
-womaniser
-womanish
-womanising
-womankind
-womanliness
-womanly
-womans
-womb
-wombat
-wombats
-wombs
-women
-womenfolk
-won
-wonder
-wondered
-wonderful
-wonderfully
-wonderfulness
-wondering
-wonderingly
-wonderland
-wonderment
-wonders
-wondrous
-wondrously
-wont
-woo
-wood
-woodbine
-woodcock
-woodcocks
-woodcut
-woodcuts
-woodcutter
-woodcutters
-wooded
-wooden
-woodenly
-woodenness
-woodland
-woodlands
-woodlice
-woodlouse
-woodman
-woodmen
-woodpecker
-woodpeckers
-woodpile
-woods
-woodshed
-woodsman
-woodsmoke
-woodwind
-woodwork
-woodworker
-woodworkers
-woodworking
-woodworm
-woody
-wooed
-wooer
-woof
-woofer
-woofers
-wooing
-wool
-woollen
-woollens
-woollier
-woollies
-woollike
-woolliness
-woolly
-wools
-wooly
-woos
-word
-wordage
-worded
-wordgame
-wordier
-wordiest
-wordiness
-wording
-wordings
-wordless
-wordlessly
-wordplay
-wordprocessing
-words
-wordsmith
-wordy
-wore
-work
-workability
-workable
-workaday
-workbench
-workbook
-workbooks
-workday
-workdays
-worked
-worker
-workers
-workfare
-workforce
-workforces
-workhorse
-workhorses
-workhouse
-workhouses
-working
-workings
-workless
-workload
-workloads
-workman
-workmanlike
-workmanship
-workmate
-workmates
-workmen
-workout
-workouts
-workpeople
-workpiece
-workpieces
-workplace
-workplaces
-workroom
-workrooms
-works
-worksheet
-worksheets
-workshop
-workshops
-workshy
-workspace
-workstation
-workstations
-worktop
-worktops
-workweek
-world
-worldclass
-worldfamous
-worldliness
-worldly
-worlds
-worldwar
-worldwide
-worm
-wormhole
-wormholes
-worming
-wormlike
-worms
-wormy
-worn
-worried
-worriedly
-worrier
-worriers
-worries
-worrisome
-worry
-worrying
-worryingly
-worse
-worsen
-worsened
-worsening
-worsens
-worser
-worship
-worshipful
-worshipped
-worshipper
-worshippers
-worshipping
-worships
-worst
-worsted
-worth
-worthier
-worthies
-worthiest
-worthily
-worthiness
-worthless
-worthlessness
-worthwhile
-worthy
-would
-wound
-wounded
-wounding
-wounds
-wove
-woven
-wow
-wowed
-wows
-wrack
-wracked
-wraith
-wraiths
-wrangle
-wrangled
-wrangler
-wrangles
-wrangling
-wrap
-wraparound
-wrapped
-wrapper
-wrappers
-wrapping
-wrappings
-wraps
-wrasse
-wrath
-wrathful
-wrathfully
-wraths
-wreak
-wreaked
-wreaking
-wreaks
-wreath
-wreathe
-wreathed
-wreathes
-wreathing
-wreaths
-wreck
-wreckage
-wrecked
-wrecker
-wreckers
-wrecking
-wrecks
-wren
-wrench
-wrenched
-wrenches
-wrenching
-wrens
-wrest
-wrested
-wresting
-wrestle
-wrestled
-wrestler
-wrestlers
-wrestles
-wrestling
-wretch
-wretched
-wretchedly
-wretchedness
-wretches
-wriggle
-wriggled
-wriggles
-wriggling
-wriggly
-wright
-wring
-wringer
-wringing
-wrings
-wrinkle
-wrinkled
-wrinkles
-wrinkling
-wrinkly
-wrist
-wristband
-wristbands
-wrists
-wristwatch
-writ
-writable
-write
-writer
-writers
-writes
-writhe
-writhed
-writhes
-writhing
-writing
-writings
-writs
-written
-wrong
-wrongdoer
-wrongdoers
-wrongdoing
-wrongdoings
-wronged
-wronger
-wrongest
-wrongful
-wrongfully
-wronging
-wrongly
-wrongness
-wrongs
-wrote
-wrought
-wroughtiron
-wrung
-wry
-wryly
-wryness
-wunderkind
-xenon
-xenophobe
-xenophobia
-xenophobic
-xerography
-xhosa
-xhosas
-xmas
-xray
-xrayed
-xraying
-xrays
-xylophone
-xylophonist
-yacht
-yachting
-yachts
-yachtsman
-yachtsmen
-yak
-yaks
-yale
-yalelock
-yam
-yams
-yank
-yankee
-yankees
-yanks
-yap
-yapping
-yaps
-yard
-yardage
-yards
-yardstick
-yardsticks
-yarn
-yarns
-yaw
-yawed
-yawl
-yawls
-yawn
-yawned
-yawning
-yawningly
-yawns
-yaws
-ye
-yea
-yeah
-yeaned
-year
-yearbook
-yearbooks
-yearling
-yearlings
-yearlong
-yearly
-yearn
-yearned
-yearning
-yearningly
-yearnings
-yearns
-years
-yeas
-yeast
-yeasts
-yeasty
-yell
-yelled
-yelling
-yellings
-yellow
-yellowed
-yellower
-yellowing
-yellowish
-yellows
-yellowy
-yells
-yelp
-yelped
-yelping
-yelpings
-yelps
-yemen
-yen
-yens
-yeoman
-yeomanry
-yeomen
-yep
-yes
-yesterday
-yesterdays
-yesteryear
-yet
-yeti
-yetis
-yew
-yews
-yiddish
-yield
-yielded
-yielding
-yields
-yip
-yippee
-yodel
-yodelled
-yodeller
-yodelling
-yodels
-yoga
-yogi
-yoke
-yoked
-yokel
-yokels
-yokes
-yolk
-yolks
-yon
-yonder
-yore
-york
-yorker
-yorkers
-you
-young
-younger
-youngest
-youngish
-youngster
-youngsters
-your
-yours
-yourself
-yourselves
-youth
-youthful
-youthfulness
-youths
-yowl
-yoyo
-yrs
-yttrium
-yuck
-yukon
-yule
-yuletide
-yummiest
-yummy
-yuppie
-yuppies
-zag
-zaire
-zambezi
-zambia
-zambian
-zambians
-zaniest
-zany
-zanzibar
-zap
-zapping
-zappy
-zaps
-zeal
-zealot
-zealotry
-zealots
-zealous
-zealously
-zealousness
-zeals
-zebra
-zebras
-zebu
-zebus
-zees
-zenith
-zeniths
-zeolite
-zeolites
-zephyr
-zephyrs
-zeppelin
-zero
-zeroed
-zeroing
-zest
-zestfully
-zesty
-zeta
-zeus
-zig
-zigzag
-zigzagged
-zigzagging
-zigzags
-zillion
-zillions
-zimbabwe
-zinc
-zion
-zionism
-zionist
-zionists
-zip
-zipped
-zipper
-zippers
-zipping
-zippy
-zips
-zither
-zithers
-zombi
-zombie
-zombies
-zonal
-zonation
-zone
-zoned
-zones
-zoning
-zoo
-zookeepers
-zoological
-zoologist
-zoologists
-zoology
-zoom
-zoomed
-zooming
-zooms
-zooplankton
-zoos
-zulu
-zulus
diff --git a/test/disabled/jvm/JavaInteraction.check b/test/disabled/jvm/JavaInteraction.check
deleted file mode 100644
index fb9d3cdd8c..0000000000
--- a/test/disabled/jvm/JavaInteraction.check
+++ /dev/null
@@ -1,4 +0,0 @@
-p.x = 5
-p.c = java.awt.Color[r=255,g=0,b=0]
-p.getX() = 5.0
-p.getC() = java.awt.Color[r=255,g=0,b=0]
diff --git a/test/disabled/jvm/JavaInteraction.scala b/test/disabled/jvm/JavaInteraction.scala
deleted file mode 100644
index 65e3c5cb40..0000000000
--- a/test/disabled/jvm/JavaInteraction.scala
+++ /dev/null
@@ -1,38 +0,0 @@
-//############################################################################
-// Test Java interaction
-//############################################################################
-
-import java.awt.Color;
-import java.awt.Point;
-
-class ColoredPoint(x: Int, y: Int, c_ : Color) extends Point(x, y) {
- val c: Color = c_;
- def getC(): Color = c;
-}
-
-object Test {
- val expected = """
-p.x = 5
-p.c = java.awt.Color[r=255,g=0,b=0]
-p.getX() = 5.0
-p.getC() = java.awt.Color[r=255,g=0,b=0]
- """.trim
-
- def connect() = {
- val p = new ColoredPoint(5, 7, Color.RED);
- List(
- "p.x = " + p.x,
- "p.c = " + p.c,
- "p.getX() = " + p.getX(),
- "p.getC() = " + p.getC()
- ).mkString("\n")
- }
-
- // This test would pointlessly fail the whole build anytime the account
- // running the test could not connect to the windowing server. The below
- // is intended to defend against this outcome.
- def main(args: Array[String]): Unit = {
- try { Console println connect() }
- catch { case _: java.lang.InternalError => Console println expected }
- }
-}
diff --git a/test/disabled/jvm/concurrent-future.check b/test/disabled/jvm/concurrent-future.check
deleted file mode 100644
index 715ac90ce7..0000000000
--- a/test/disabled/jvm/concurrent-future.check
+++ /dev/null
@@ -1,14 +0,0 @@
-test1: hai world
-test1: kthxbye
-test2: hai world
-test2: awsum thx
-test2: kthxbye
-test3: hai world
-test4: hai world
-test4: kthxbye
-test5: hai world
-test5: kthxbye
-test6: hai world
-test6: kthxbye
-test7: hai world
-test7: kthxbye
diff --git a/test/disabled/jvm/concurrent-future.scala b/test/disabled/jvm/concurrent-future.scala
deleted file mode 100644
index eda05428c8..0000000000
--- a/test/disabled/jvm/concurrent-future.scala
+++ /dev/null
@@ -1,122 +0,0 @@
-
-
-
-import scala.concurrent._
-
-
-
-object Test extends App {
-
- def once(body: (() => Unit) => Unit) {
- val sv = new SyncVar[Boolean]
- body(() => sv put true)
- sv.take()
- }
-
- def output(num: Int, msg: String) {
- println("test" + num + ": " + msg)
- }
-
- def testOnSuccess(): Unit = once {
- done =>
- val f = future {
- output(1, "hai world")
- }
- f onSuccess { case _ =>
- output(1, "kthxbye")
- done()
- }
- }
-
- def testOnSuccessWhenCompleted(): Unit = once {
- done =>
- val f = future {
- output(2, "hai world")
- }
- f onSuccess { case _ =>
- output(2, "awsum thx")
- f onSuccess { case _ =>
- output(2, "kthxbye")
- done()
- }
- }
- }
-
- def testOnSuccessWhenFailed(): Unit = once {
- done =>
- val f = future[Unit] {
- output(3, "hai world")
- done()
- throw new Exception
- }
- f onSuccess { case _ =>
- output(3, "onoes")
- }
- }
-
- def testOnFailure(): Unit = once {
- done =>
- val f = future[Unit] {
- output(4, "hai world")
- throw new Exception
- }
- f onSuccess { case _ =>
- output(4, "onoes")
- done()
- }
- f onFailure { case _ =>
- output(4, "kthxbye")
- done()
- }
- }
-
- def testOnFailureWhenSpecialThrowable(num: Int, cause: Throwable): Unit = once {
- done =>
- val f = future[Unit] {
- output(num, "hai world")
- throw cause
- }
- f onSuccess { case _ =>
- output(num, "onoes")
- done()
- }
- f onFailure {
- case e: ExecutionException if (e.getCause == cause) =>
- output(num, "kthxbye")
- done()
- case _ =>
- output(num, "onoes")
- done()
- }
- }
-
- // def testOnFailureWhenFutureTimeoutException(): Unit = once {
- // done =>
- // val f = future[Unit] {
- // output(8, "hai world")
- // throw new FutureTimeoutException(null)
- // }
- // f onSuccess { case _ =>
- // output(8, "onoes")
- // done()
- // }
- // f onFailure {
- // case e: FutureTimeoutException =>
- // output(8, "im in yr loop")
- // done()
- // case other =>
- // output(8, "onoes: " + other)
- // done()
- // }
- // }
-
- testOnSuccess()
- testOnSuccessWhenCompleted()
- testOnSuccessWhenFailed()
- testOnFailure()
- testOnFailureWhenSpecialThrowable(5, new Error)
- testOnFailureWhenSpecialThrowable(6, new scala.util.control.ControlThrowable { })
- testOnFailureWhenSpecialThrowable(7, new InterruptedException)
- // testOnFailureWhenFutureTimeoutException()
-
-}
diff --git a/test/disabled/neg/abstract-report3.check b/test/disabled/neg/abstract-report3.check
deleted file mode 100644
index ac3f4abd5a..0000000000
--- a/test/disabled/neg/abstract-report3.check
+++ /dev/null
@@ -1,39 +0,0 @@
-abstract-report3.scala:1: error: class Foo needs to be abstract, since:
-it has 25 unimplemented members.
-/** As seen from class Foo, the missing signatures are as follows.
- * For convenience, these are usable as stub implementations.
- */
- // Members declared in java.util.concurrent.BlockingQueue
- def add(x$1: T): Boolean = ???
- def contains(x$1: Any): Boolean = ???
- def drainTo(x$1: java.util.Collection[_ >: T],x$2: Int): Int = ???
- def drainTo(x$1: java.util.Collection[_ >: T]): Int = ???
- def offer(x$1: T,x$2: Long,x$3: java.util.concurrent.TimeUnit): Boolean = ???
- def offer(x$1: T): Boolean = ???
- def poll(x$1: Long,x$2: java.util.concurrent.TimeUnit): T = ???
- def put(x$1: T): Unit = ???
- def remainingCapacity(): Int = ???
- def remove(x$1: Any): Boolean = ???
- def take(): T = ???
-
- // Members declared in java.util.Collection
- def addAll(x$1: java.util.Collection[_ <: T]): Boolean = ???
- def clear(): Unit = ???
- def containsAll(x$1: java.util.Collection[_]): Boolean = ???
- def isEmpty(): Boolean = ???
- def iterator(): java.util.Iterator[T] = ???
- def removeAll(x$1: java.util.Collection[_]): Boolean = ???
- def retainAll(x$1: java.util.Collection[_]): Boolean = ???
- def size(): Int = ???
- def toArray[T](x$1: Array[T with Object]): Array[T with Object] = ???
- def toArray(): Array[Object] = ???
-
- // Members declared in java.util.Queue
- def element(): T = ???
- def peek(): T = ???
- def poll(): T = ???
- def remove(): T = ???
-
-class Foo[T] extends java.util.concurrent.BlockingQueue[T] { }
- ^
-one error found
diff --git a/test/disabled/neg/abstract-report3.scala b/test/disabled/neg/abstract-report3.scala
deleted file mode 100644
index d3cce86a6b..0000000000
--- a/test/disabled/neg/abstract-report3.scala
+++ /dev/null
@@ -1 +0,0 @@
-class Foo[T] extends java.util.concurrent.BlockingQueue[T] { } \ No newline at end of file
diff --git a/test/disabled/pos/caseclass-parents.flags b/test/disabled/pos/caseclass-parents.flags
deleted file mode 100644
index e1b37447c9..0000000000
--- a/test/disabled/pos/caseclass-parents.flags
+++ /dev/null
@@ -1 +0,0 @@
--Xexperimental \ No newline at end of file
diff --git a/test/disabled/pos/caseclass-parents.scala b/test/disabled/pos/caseclass-parents.scala
deleted file mode 100644
index d4bc52154b..0000000000
--- a/test/disabled/pos/caseclass-parents.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-case class Foo() extends Serializable
-case object Bar extends Serializable
-
-case class Bippy[T, U](x: T, y: U) extends Product2[T, U] { }
-
-case class Bounded[T <: util.Random, U <: util.Random](x: T, y: U) { }
-
-class A {
- def f(x: Bounded[_, _]) = x.productIterator foreach g
- def g(rand: util.Random) = ()
-} \ No newline at end of file
diff --git a/test/disabled/pos/caseclass-productN.flags b/test/disabled/pos/caseclass-productN.flags
deleted file mode 100644
index e1b37447c9..0000000000
--- a/test/disabled/pos/caseclass-productN.flags
+++ /dev/null
@@ -1 +0,0 @@
--Xexperimental \ No newline at end of file
diff --git a/test/disabled/pos/caseclass-productN.scala b/test/disabled/pos/caseclass-productN.scala
deleted file mode 100644
index e2177856fd..0000000000
--- a/test/disabled/pos/caseclass-productN.scala
+++ /dev/null
@@ -1,20 +0,0 @@
-object Test {
- class A
- class B extends A
- class C extends B
-
- case class Bippy[T](x: Int, y: List[T], z: T) { }
- case class Bippy2[T](x: Int, y: List[T], z: T) { }
-
- def bippies = List(
- Bippy(5, List(new C), new B),
- Bippy2(5, List(new B), new C)
- )
-
- def bmethod(x: B) = ()
-
- def main(args: Array[String]): Unit = {
- bippies flatMap (_._2) foreach bmethod
- bippies map (_._3) foreach bmethod
- }
-}
diff --git a/test/disabled/pos/spec-List.scala b/test/disabled/pos/spec-List.scala
deleted file mode 100644
index 6bed08ae8a..0000000000
--- a/test/disabled/pos/spec-List.scala
+++ /dev/null
@@ -1,869 +0,0 @@
-/* __ *\
-** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2003-2013, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
-** /____/\___/_/ |_/____/_/ | | **
-** |/ **
-\* */
-
-
-package scala.collection
-package immutable
-
-import generic._
-import mutable.{Builder, ListBuffer}
-import annotation.tailrec
-
-/** A class representing an ordered collection of elements of type
- * <code>a</code>. This class comes with two implementing case
- * classes <code>scala.Nil</code> and <code>scala.::</code> that
- * implement the abstract members <code>isEmpty</code>,
- * <code>head</code> and <code>tail</code>.
- *
- * @author Martin Odersky and others
- * @version 2.8
- */
-sealed trait List[@specialized +A] extends LinearSeq[A]
- with Product
- with GenericTraversableTemplate[A, List]
- with LinearSeqOptimized[A, List[A]] {
- override def companion: GenericCompanion[List] = List
-
- import scala.collection.{Iterable, Traversable, Seq}
-
- /** Returns true if the list does not contain any elements.
- * @return <code>true</code>, iff the list is empty.
- */
- def isEmpty: Boolean
-
- /** Returns this first element of the list.
- *
- * @return the first element of this list.
- * @throws Predef.NoSuchElementException if the list is empty.
- */
- def head: A
-
- /** Returns this list without its first element.
- *
- * @return this list without its first element.
- * @throws Predef.NoSuchElementException if the list is empty.
- */
- def tail: List[A]
-
- // New methods in List
-
- /** <p>
- * Add an element <code>x</code> at the beginning of this list.
- * </p>
- *
- * @param x the element to prepend.
- * @return the list with <code>x</code> added at the beginning.
- * @ex <code>1 :: List(2, 3) = List(2, 3).::(1) = List(1, 2, 3)</code>
- */
- def ::[@specialized B >: A] (x: B): List[B] =
- new scala.collection.immutable.::(x, this)
-
- /** <p>
- * Returns a list resulting from the concatenation of the given
- * list <code>prefix</code> and this list.
- * </p>
- *
- * @param prefix the list to concatenate at the beginning of this list.
- * @return the concatenation of the two lists.
- * @ex <code>List(1, 2) ::: List(3, 4) = List(3, 4).:::(List(1, 2)) = List(1, 2, 3, 4)</code>
- */
- def :::[B >: A](prefix: List[B]): List[B] =
- if (isEmpty) prefix
- else (new ListBuffer[B] ++= prefix).prependToList(this)
-
- /** Reverse the given prefix and append the current list to that.
- * This function is equivalent to an application of <code>reverse</code>
- * on the prefix followed by a call to <code>:::</code>, but is more
- * efficient.
- *
- * @param prefix the prefix to reverse and then prepend
- * @return the concatenation of the reversed prefix and the current list.
- */
- def reverse_:::[B >: A](prefix: List[B]): List[B] = {
- var these: List[B] = this
- var pres = prefix
- while (!pres.isEmpty) {
- these = pres.head :: these
- pres = pres.tail
- }
- these
- }
-
- /** Apply a function to all the elements of the list, and return the
- * reversed list of results. This is equivalent to a call to <code>map</code>
- * followed by a call to <code>reverse</code>, but more efficient.
- * !!! should we deprecate this? Why have reverseMap, but not filterMap or reverseFilter, say?
- * @param f the function to apply to each elements.
- * @return the reversed list of results.
- */
- def reverseMap[B](f: A => B): List[B] = {
- @tailrec
- def loop(l: List[A], res: List[B]): List[B] = l match {
- case Nil => res
- case head :: tail => loop(tail, f(head) :: res)
- }
- loop(this, Nil)
- }
-
- /** Like xs map f, but returns <code>xs</code> unchanged if function
- * <code>f</code> maps all elements to themselves (wrt ==).
- * @note Unlike `map`, `mapConserve` is not tail-recursive.
- */
- def mapConserve[B >: A] (f: A => B): List[B] = {
- def loop(ys: List[A]): List[B] =
- if (ys.isEmpty) this
- else {
- val head0 = ys.head
- val head1 = f(head0)
- if (head1 == head0) {
- loop(ys.tail)
- } else {
- val ys1 = head1 :: ys.tail.mapConserve(f)
- if (this eq ys) ys1
- else {
- val b = new ListBuffer[B]
- var xc = this
- while (xc ne ys) {
- b += xc.head
- xc = xc.tail
- }
- b.prependToList(ys1)
- }
- }
- }
- loop(this)
- }
-
- // Overridden methods from IterableLike or overloaded variants of such methods
-
- /** Create a new list which contains all elements of this list
- * followed by all elements of Traversable `that'
- */
- override def ++[B >: A, That](xs: GenTraversableOnce[B])(implicit bf: CanBuildFrom[List[A], B, That]): That = {
- val b = bf(this)
- if (b.isInstanceOf[ListBuffer[_]]) (this ::: xs.toList).asInstanceOf[That]
- else super.++(xs)
- }
-
- /** Overrides the method in Iterable for efficiency.
- *
- * @return the list itself
- */
- override def toList: List[A] = this
-
- /** Returns the <code>n</code> first elements of this list, or else the whole
- * list, if it has less than <code>n</code> elements.
-
- * @param n the number of elements to take.
- * @return the <code>n</code> first elements of this list.
- */
- override def take(n: Int): List[A] = {
- val b = new ListBuffer[A]
- var i = 0
- var these = this
- while (!these.isEmpty && i < n) {
- i += 1
- b += these.head
- these = these.tail
- }
- if (these.isEmpty) this
- else b.toList
- }
-
- /** Returns the list without its <code>n</code> first elements.
- * If this list has less than <code>n</code> elements, the empty list is returned.
- *
- * @param n the number of elements to drop.
- * @return the list without its <code>n</code> first elements.
- */
- override def drop(n: Int): List[A] = {
- var these = this
- var count = n
- while (!these.isEmpty && count > 0) {
- these = these.tail
- count -= 1
- }
- these
- }
-
- /** Returns the list with elements belonging to the given index range.
- *
- * @param start the start position of the list slice.
- * @param end the end position (exclusive) of the list slice.
- * @return the list with elements belonging to the given index range.
- */
- override def slice(start: Int, end: Int): List[A] = {
- var len = end
- if (start > 0) len -= start
- drop(start) take len
- }
-
- /** Returns the rightmost <code>n</code> elements from this list.
- *
- * @param n the number of elements to take
- * @return the suffix of length <code>n</code> of the list
- */
- override def takeRight(n: Int): List[A] = {
- @tailrec
- def loop(lead: List[A], lag: List[A]): List[A] = lead match {
- case Nil => lag
- case _ :: tail => loop(tail, lag.tail)
- }
- loop(drop(n), this)
- }
-
- // dropRight is inherited from Stream
-
- /** Split the list at a given point and return the two parts thus
- * created.
- *
- * @param n the position at which to split
- * @return a pair of lists composed of the first <code>n</code>
- * elements, and the other elements.
- */
- override def splitAt(n: Int): (List[A], List[A]) = {
- val b = new ListBuffer[A]
- var i = 0
- var these = this
- while (!these.isEmpty && i < n) {
- i += 1
- b += these.head
- these = these.tail
- }
- (b.toList, these)
- }
-
- /** Returns the longest prefix of this list whose elements satisfy
- * the predicate <code>p</code>.
- *
- * @param p the test predicate.
- * @return the longest prefix of this list whose elements satisfy
- * the predicate <code>p</code>.
- */
- override def takeWhile(p: A => Boolean): List[A] = {
- val b = new ListBuffer[A]
- var these = this
- while (!these.isEmpty && p(these.head)) {
- b += these.head
- these = these.tail
- }
- b.toList
- }
-
- /** Returns the longest suffix of this list whose first element
- * does not satisfy the predicate <code>p</code>.
- *
- * @param p the test predicate.
- * @return the longest suffix of the list whose first element
- * does not satisfy the predicate <code>p</code>.
- */
- override def dropWhile(p: A => Boolean): List[A] = {
- @tailrec
- def loop(xs: List[A]): List[A] =
- if (xs.isEmpty || !p(xs.head)) xs
- else loop(xs.tail)
-
- loop(this)
- }
-
- /** Returns the longest prefix of the list whose elements all satisfy
- * the given predicate, and the rest of the list.
- *
- * @param p the test predicate
- * @return a pair consisting of the longest prefix of the list whose
- * elements all satisfy <code>p</code>, and the rest of the list.
- */
- override def span(p: A => Boolean): (List[A], List[A]) = {
- val b = new ListBuffer[A]
- var these = this
- while (!these.isEmpty && p(these.head)) {
- b += these.head
- these = these.tail
- }
- (b.toList, these)
- }
-
- /** A list consisting of all elements of this list in reverse order.
- */
- override def reverse: List[A] = {
- var result: List[A] = Nil
- var these = this
- while (!these.isEmpty) {
- result = these.head :: result
- these = these.tail
- }
- result
- }
-
- override def stringPrefix = "List"
-
- override def toStream : Stream[A] =
- if (isEmpty) Stream.Empty
- else new Stream.Cons(head, tail.toStream)
-
- // !!! todo: work in patch
-
- /** Computes the difference between this list and the given list
- * <code>that</code>.
- *
- * @param that the list of elements to remove from this list.
- * @return this list without the elements of the given list
- * <code>that</code>.
- */
- @deprecated("use `diff' instead")
- def -- [B >: A](that: List[B]): List[B] = {
- val b = new ListBuffer[B]
- var these = this
- while (!these.isEmpty) {
- if (!that.contains(these.head)) b += these.head
- these = these.tail
- }
- b.toList
- }
-
- /** Computes the difference between this list and the given object
- * <code>x</code>.
- *
- * @param x the object to remove from this list.
- * @return this list without occurrences of the given object
- * <code>x</code>.
- */
- @deprecated("use `diff' instead")
- def - [B >: A](x: B): List[B] = {
- val b = new ListBuffer[B]
- var these = this
- while (!these.isEmpty) {
- if (these.head != x) b += these.head
- these = these.tail
- }
- b.toList
- }
-
- /** <p>
- * Sort the list according to the comparison function
- * <code>&lt;(e1: a, e2: a) =&gt; Boolean</code>,
- * which should be true iff <code>e1</code> is smaller than
- * <code>e2</code>.
- * !!! todo: move sorting to IterableLike
- * </p>
- *
- * @param lt the comparison function
- * @return a list sorted according to the comparison function
- * <code>&lt;(e1: a, e2: a) =&gt; Boolean</code>.
- * @ex <pre>
- * List("Steve", "Tom", "John", "Bob")
- * .sort((e1, e2) => (e1 compareTo e2) &lt; 0) =
- * List("Bob", "John", "Steve", "Tom")</pre>
- */
- @deprecated("use `sortWith' instead")
- def sort(lt : (A,A) => Boolean): List[A] = {
- /** Merge two already-sorted lists */
- def merge(l1: List[A], l2: List[A]): List[A] = {
- val res = new ListBuffer[A]
- var left1 = l1
- var left2 = l2
-
- while (!left1.isEmpty && !left2.isEmpty) {
- if(lt(left1.head, left2.head)) {
- res += left1.head
- left1 = left1.tail
- } else {
- res += left2.head
- left2 = left2.tail
- }
- }
-
- res ++= left1
- res ++= left2
-
- res.toList
- }
-
- /** Split a list into two lists of about the same size */
- def split(lst: List[A]) = {
- val res1 = new ListBuffer[A]
- val res2 = new ListBuffer[A]
- var left = lst
-
- while (!left.isEmpty) {
- res1 += left.head
- left = left.tail
- if (!left.isEmpty) {
- res2 += left.head
- left = left.tail
- }
- }
-
- (res1.toList, res2.toList)
- }
-
-
- /** Merge-sort the specified list */
- def ms(lst: List[A]): List[A] =
- lst match {
- case Nil => lst
- case x :: Nil => lst
- case x :: y :: Nil =>
- if (lt(x,y))
- lst
- else
- y :: x :: Nil
-
- case lst =>
- val (l1, l2) = split(lst)
- val l1s = ms(l1)
- val l2s = ms(l2)
- merge(l1s, l2s)
- }
-
- ms(this)
- }
-
-}
-
-/** The empty list.
- *
- * @author Martin Odersky
- * @version 1.0, 15/07/2003
- */
-@SerialVersionUID(0 - 8256821097970055419L)
-case object Nil extends List[Nothing] {
- override def isEmpty = true
- override def head: Nothing =
- throw new NoSuchElementException("head of empty list")
- override def tail: List[Nothing] =
- throw new NoSuchElementException("tail of empty list")
- // Removal of equals method here might lead to an infinite recursion similar to IntMap.equals.
- override def equals(that: Any) = that match {
- case that1: Seq[_] => that1.isEmpty
- case _ => false
- }
-}
-
-/** A non empty list characterized by a head and a tail.
- *
- * @author Martin Odersky
- * @version 1.0, 15/07/2003
- */
-@SerialVersionUID(0L - 8476791151983527571L)
-final case class ::[@specialized B](private var hd: B, private[scala] var tl: List[B]) extends List[B] {
- override def head : B = hd
- override def tail : List[B] = tl
- override def isEmpty: Boolean = false
-
- import java.io._
-
- private def writeObject(out: ObjectOutputStream) {
- var xs: List[B] = this
- while (!xs.isEmpty) { out.writeObject(xs.head); xs = xs.tail }
- out.writeObject(ListSerializeEnd)
- }
-
- private def readObject(in: ObjectInputStream) {
- hd = in.readObject.asInstanceOf[B]
- assert(hd != ListSerializeEnd)
- var current: ::[B] = this
- while (true) in.readObject match {
- case ListSerializeEnd =>
- current.tl = Nil
- return
- case a : Any =>
- val list : ::[B] = new ::(a.asInstanceOf[B], Nil)
- current.tl = list
- current = list
- }
- }
-}
-
-/** This object provides methods for creating specialized lists, and for
- * transforming special kinds of lists (e.g. lists of lists).
- *
- * @author Martin Odersky
- * @version 2.8
- */
-object List extends SeqFactory[List] {
-
- import collection.{Iterable, Seq}
-
- implicit def builderFactory[A]: CanBuildFrom[Coll, A, List[A]] =
- new GenericCanBuildFrom[A] {
- override def apply() = newBuilder[A]
- }
- def newBuilder[A]: Builder[A, List[A]] = new ListBuffer[A]
-
- override def empty[A]: List[A] = Nil
-
- override def apply[A](xs: A*): List[A] = xs.toList
-
- /** Create a sorted list with element values
- * <code>v<sub>n+1</sub> = step(v<sub>n</sub>)</code>
- * where <code>v<sub>0</sub> = start</code>
- * and elements are in the range between <code>start</code> (inclusive)
- * and <code>end</code> (exclusive)
- *
- * @param start the start value of the list
- * @param end the end value of the list
- * @param step the increment function of the list, which given <code>v<sub>n</sub></code>,
- * computes <code>v<sub>n+1</sub></code>. Must be monotonically increasing
- * or decreasing.
- * @return the sorted list of all integers in range [start;end).
- */
- @deprecated("use `iterate' instead")
- def range(start: Int, end: Int, step: Int => Int): List[Int] = {
- val up = step(start) > start
- val down = step(start) < start
- val b = new ListBuffer[Int]
- var i = start
- while ((!up || i < end) && (!down || i > end)) {
- b += i
- val next = step(i)
- if (i == next)
- throw new IllegalArgumentException("the step function did not make any progress on "+ i)
- i = next
- }
- b.toList
- }
-
- /** Create a list containing several copies of an element.
- *
- * @param n the length of the resulting list
- * @param elem the element composing the resulting list
- * @return a list composed of n elements all equal to elem
- */
- @deprecated("use `fill' instead")
- def make[A](n: Int, elem: A): List[A] = {
- val b = new ListBuffer[A]
- var i = 0
- while (i < n) {
- b += elem
- i += 1
- }
- b.toList
- }
-
- /** Concatenate all the elements of a given list of lists.
- *
- * @param xss the list of lists that are to be concatenated
- * @return the concatenation of all the lists
- */
- @deprecated("use `xss.flatten' instead")
- def flatten[A](xss: List[List[A]]): List[A] = {
- val b = new ListBuffer[A]
- for (xs <- xss) {
- var xc = xs
- while (!xc.isEmpty) {
- b += xc.head
- xc = xc.tail
- }
- }
- b.toList
- }
-
- /** Transforms a list of pairs into a pair of lists.
- *
- * @param xs the list of pairs to unzip
- * @return a pair of lists.
- */
- @deprecated("use `xs.unzip' instead")
- def unzip[A,B](xs: List[(A,B)]): (List[A], List[B]) = {
- val b1 = new ListBuffer[A]
- val b2 = new ListBuffer[B]
- var xc = xs
- while (!xc.isEmpty) {
- b1 += xc.head._1
- b2 += xc.head._2
- xc = xc.tail
- }
- (b1.toList, b2.toList)
- }
-
- /** Transforms an iterable of pairs into a pair of lists.
- *
- * @param xs the iterable of pairs to unzip
- * @return a pair of lists.
- */
- @deprecated("use `xs.unzip' instead")
- def unzip[A,B](xs: Iterable[(A,B)]): (List[A], List[B]) =
- xs.foldRight[(List[A], List[B])]((Nil, Nil)) {
- case ((x, y), (xs, ys)) => (x :: xs, y :: ys)
- }
-
- /**
- * Returns the <code>Left</code> values in the given <code>Iterable</code>
- * of <code>Either</code>s.
- */
- @deprecated("use `Either.lefts' instead")
- def lefts[A, B](es: Iterable[Either[A, B]]) =
- es.foldRight[List[A]](Nil)((e, as) => e match {
- case Left(a) => a :: as
- case Right(_) => as
- })
-
- /**
- * Returns the <code>Right</code> values in the given<code>Iterable</code> of <code>Either</code>s.
- */
- @deprecated("use `Either.rights' instead")
- def rights[A, B](es: Iterable[Either[A, B]]) =
- es.foldRight[List[B]](Nil)((e, bs) => e match {
- case Left(_) => bs
- case Right(b) => b :: bs
- })
-
- /** Transforms an Iterable of Eithers into a pair of lists.
- *
- * @param xs the iterable of Eithers to separate
- * @return a pair of lists.
- */
- @deprecated("use `Either.separate' instead")
- def separate[A,B](es: Iterable[Either[A,B]]): (List[A], List[B]) =
- es.foldRight[(List[A], List[B])]((Nil, Nil)) {
- case (Left(a), (lefts, rights)) => (a :: lefts, rights)
- case (Right(b), (lefts, rights)) => (lefts, b :: rights)
- }
-
- /** Converts an iterator to a list.
- *
- * @param it the iterator to convert
- * @return a list that contains the elements returned by successive
- * calls to <code>it.next</code>
- */
- @deprecated("use `it.toList' instead")
- def fromIterator[A](it: Iterator[A]): List[A] = it.toList
-
- /** Converts an array into a list.
- *
- * @param arr the array to convert
- * @return a list that contains the same elements than <code>arr</code>
- * in the same order
- */
- @deprecated("use `array.toList' instead")
- def fromArray[A](arr: Array[A]): List[A] = fromArray(arr, 0, arr.length)
-
- /** Converts a range of an array into a list.
- *
- * @param arr the array to convert
- * @param start the first index to consider
- * @param len the length of the range to convert
- * @return a list that contains the same elements than <code>arr</code>
- * in the same order
- */
- @deprecated("use `array.view(start, end).toList' instead")
- def fromArray[A](arr: Array[A], start: Int, len: Int): List[A] = {
- var res: List[A] = Nil
- var i = start + len
- while (i > start) {
- i -= 1
- res = arr(i) :: res
- }
- res
- }
-
- /** Parses a string which contains substrings separated by a
- * separator character and returns a list of all substrings.
- *
- * @param str the string to parse
- * @param separator the separator character
- * @return the list of substrings
- */
- @deprecated("use `str.split(separator).toList' instead")
- def fromString(str: String, separator: Char): List[String] = {
- var words: List[String] = Nil
- var pos = str.length()
- while (pos > 0) {
- val pos1 = str.lastIndexOf(separator, pos - 1)
- if (pos1 + 1 < pos)
- words = str.substring(pos1 + 1, pos) :: words
- pos = pos1
- }
- words
- }
-
- /** Returns the given string as a list of characters.
- *
- * @param str the string to convert.
- * @return the string as a list of characters.
- */
- @deprecated("use `str.toList' instead")
- def fromString(str: String): List[Char] = str.toList
-
- /** Returns the given list of characters as a string.
- *
- * @param xs the list to convert.
- * @return the list in form of a string.
- */
- @deprecated("use `xs.mkString' instead")
- def toString(xs: List[Char]): String = {
- val sb = new StringBuilder()
- var xc = xs
- while (!xc.isEmpty) {
- sb.append(xc.head)
- xc = xc.tail
- }
- sb.toString()
- }
-
- /** Like xs map f, but returns <code>xs</code> unchanged if function
- * <code>f</code> maps all elements to themselves.
- */
- @deprecated("use `xs.mapConserve(f)' instead")
- def mapConserve[A <: AnyRef](xs: List[A])(f: A => A): List[A] = {
- def loop(ys: List[A]): List[A] =
- if (ys.isEmpty) xs
- else {
- val head0 = ys.head
- val head1 = f(head0)
- if (head1 eq head0) {
- loop(ys.tail)
- } else {
- val ys1 = head1 :: mapConserve(ys.tail)(f)
- if (xs eq ys) ys1
- else {
- val b = new ListBuffer[A]
- var xc = xs
- while (xc ne ys) {
- b += xc.head
- xc = xc.tail
- }
- b.prependToList(ys1)
- }
- }
- }
- loop(xs)
- }
-
- /** Returns the list resulting from applying the given function <code>f</code>
- * to corresponding elements of the argument lists.
- * @param f function to apply to each pair of elements.
- * @return <code>[f(a0,b0), ..., f(an,bn)]</code> if the lists are
- * <code>[a0, ..., ak]</code>, <code>[b0, ..., bl]</code> and
- * <code>n = min(k,l)</code>
- */
- @deprecated("use `(xs, ys).map(f)' instead")
- def map2[A,B,C](xs: List[A], ys: List[B])(f: (A, B) => C): List[C] = {
- val b = new ListBuffer[C]
- var xc = xs
- var yc = ys
- while (!xc.isEmpty && !yc.isEmpty) {
- b += f(xc.head, yc.head)
- xc = xc.tail
- yc = yc.tail
- }
- b.toList
- }
-
- /** Returns the list resulting from applying the given function
- * <code>f</code> to corresponding elements of the argument lists.
- *
- * @param f function to apply to each pair of elements.
- * @return <code>[f(a<sub>0</sub>,b<sub>0</sub>,c<sub>0</sub>),
- * ..., f(a<sub>n</sub>,b<sub>n</sub>,c<sub>n</sub>)]</code>
- * if the lists are <code>[a<sub>0</sub>, ..., a<sub>k</sub>]</code>,
- * <code>[b<sub>0</sub>, ..., b<sub>l</sub>]</code>,
- * <code>[c<sub>0</sub>, ..., c<sub>m</sub>]</code> and
- * <code>n = min(k,l,m)</code>
- */
- @deprecated("use `(xs, ys, zs).map(f)' instead")
- def map3[A,B,C,D](xs: List[A], ys: List[B], zs: List[C])(f: (A, B, C) => D): List[D] = {
- val b = new ListBuffer[D]
- var xc = xs
- var yc = ys
- var zc = zs
- while (!xc.isEmpty && !yc.isEmpty && !zc.isEmpty) {
- b += f(xc.head, yc.head, zc.head)
- xc = xc.tail
- yc = yc.tail
- zc = zc.tail
- }
- b.toList
- }
-
- /** Tests whether the given predicate <code>p</code> holds
- * for all corresponding elements of the argument lists.
- *
- * @param p function to apply to each pair of elements.
- * @return <code>(p(a<sub>0</sub>,b<sub>0</sub>) &amp;&amp;
- * ... &amp;&amp; p(a<sub>n</sub>,b<sub>n</sub>))]</code>
- * if the lists are <code>[a<sub>0</sub>, ..., a<sub>k</sub>]</code>;
- * <code>[b<sub>0</sub>, ..., b<sub>l</sub>]</code>
- * and <code>n = min(k,l)</code>
- */
- @deprecated("use `(xs, ys).forall(f)' instead")
- def forall2[A,B](xs: List[A], ys: List[B])(f: (A, B) => Boolean): Boolean = {
- var xc = xs
- var yc = ys
- while (!xc.isEmpty && !yc.isEmpty) {
- if (!f(xc.head, yc.head)) return false
- xc = xc.tail
- yc = yc.tail
- }
- true
- }
-
- /** Tests whether the given predicate <code>p</code> holds
- * for some corresponding elements of the argument lists.
- *
- * @param p function to apply to each pair of elements.
- * @return <code>n != 0 &amp;&amp; (p(a<sub>0</sub>,b<sub>0</sub>) ||
- * ... || p(a<sub>n</sub>,b<sub>n</sub>))]</code> if the lists are
- * <code>[a<sub>0</sub>, ..., a<sub>k</sub>]</code>,
- * <code>[b<sub>0</sub>, ..., b<sub>l</sub>]</code> and
- * <code>n = min(k,l)</code>
- */
- @deprecated("use `(xs, ys).exists(f)' instead")
- def exists2[A,B](xs: List[A], ys: List[B])(f: (A, B) => Boolean): Boolean = {
- var xc = xs
- var yc = ys
- while (!xc.isEmpty && !yc.isEmpty) {
- if (f(xc.head, yc.head)) return true
- xc = xc.tail
- yc = yc.tail
- }
- false
- }
-
- /** Transposes a list of lists.
- * pre: All element lists have the same length.
- *
- * @param xss the list of lists
- * @return the transposed list of lists
- */
- @deprecated("use p`xss.transpose' instead")
- def transpose[A](xss: List[List[A]]): List[List[A]] = {
- val buf = new ListBuffer[List[A]]
- var yss = xss
- while (!yss.head.isEmpty) {
- buf += (yss map (_.head))
- yss = (yss map (_.tail))
- }
- buf.toList
- }
-
- /** Lists with ordered elements are ordered
- implicit def list2ordered[a <% Ordered[a]](x: List[a]): Ordered[List[a]] = new Ordered[List[a]] {
- def compare [b >: List[a] <% Ordered[b]](y: b): Int = y match {
- case y1: List[a] => compareLists(x, y1);
- case _ => -(y compare x)
- }
- private def compareLists(xs: List[a], ys: List[a]): Int = {
- if (xs.isEmpty && ys.isEmpty) 0
- else if (xs.isEmpty) -1
- else if (ys.isEmpty) 1
- else {
- val s = xs.head compare ys.head;
- if (s != 0) s
- else compareLists(xs.tail, ys.tail)
- }
- }
- }
- */
-}
-
-/** Only used for list serialization */
-@SerialVersionUID(0L - 8476791151975527571L)
-private[scala] case object ListSerializeEnd
-
diff --git a/test/disabled/pos/t1545.scala b/test/disabled/pos/t1545.scala
deleted file mode 100644
index 4c5908b8a1..0000000000
--- a/test/disabled/pos/t1545.scala
+++ /dev/null
@@ -1,18 +0,0 @@
-// According to the spec this code should not be legal.
-// Disabling for now.
-object Main extends App {
-
- case class Foo (field : Option[String])
-
- val x : PartialFunction[Foo,Int] =
- {
- c => c.field match {
- case Some (s) => 42
- case None => 99
- }
- }
-
- println (x (Foo (None))) // prints 99
- println (x (Foo (Some ("foo")))) // prints 42
-
-}
diff --git a/test/disabled/pos/t1737/A.java b/test/disabled/pos/t1737/A.java
deleted file mode 100644
index ee87e29a35..0000000000
--- a/test/disabled/pos/t1737/A.java
+++ /dev/null
@@ -1,3 +0,0 @@
-public interface A<T extends String> {
- T get();
-} \ No newline at end of file
diff --git a/test/disabled/pos/t1737/B.java b/test/disabled/pos/t1737/B.java
deleted file mode 100644
index 28a1907a04..0000000000
--- a/test/disabled/pos/t1737/B.java
+++ /dev/null
@@ -1 +0,0 @@
-public abstract class B implements A {} \ No newline at end of file
diff --git a/test/disabled/pos/t1737/c.scala b/test/disabled/pos/t1737/c.scala
deleted file mode 100644
index 782ec18b9e..0000000000
--- a/test/disabled/pos/t1737/c.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-class C extends B {
- this: A[_] =>
- def get = "foo"
-} \ No newline at end of file
diff --git a/test/disabled/pos/t2919.scala b/test/disabled/pos/t2919.scala
deleted file mode 100644
index 5e51cf9de7..0000000000
--- a/test/disabled/pos/t2919.scala
+++ /dev/null
@@ -1,12 +0,0 @@
-import javax.xml.bind.annotation.adapters.XmlAdapter
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter
-
-case class Link(
- @XmlJavaTypeAdapter(classOf[StringOptionAdapter]) val title: Option[String]
-)
-
-class StringOptionAdapter extends XmlAdapter[String, Option[String]] {
- def unmarshal(str: String) = error("stub")
- def marshal(op: Option[String]) = error("Stub")
-}
-
diff --git a/test/disabled/presentation/akka.check b/test/disabled/presentation/akka.check
deleted file mode 100644
index 5105d85a00..0000000000
--- a/test/disabled/presentation/akka.check
+++ /dev/null
@@ -1,492 +0,0 @@
-reload: Actor.scala, ActorRef.scala, ActorRegistry.scala, Actors.java, Address.scala, AkkaException.scala, AkkaLoader.scala, Bootable.scala, BootableActorLoaderService.scala, BoundedBlockingQueue.scala, Config.scala, ConfigParser.scala, Configuration.scala, Configurator.scala, Crypt.scala, DataFlow.scala, Dispatchers.scala, Duration.scala, EventHandler.scala, ExecutorBasedEventDrivenDispatcher.scala, ExecutorBasedEventDrivenWorkStealingDispatcher.scala, FSM.scala, Future.scala, HashCode.scala, Helpers.scala, Hex.java, Importer.scala, Iterators.scala, JavaAPI.scala, JavaEventHandler.java, ListenerManagement.scala, Listeners.scala, LockUtil.scala, MACAddressParser.java, MailboxHandling.scala, MessageHandling.scala, Pool.scala, ReflectiveAccess.scala, RemoteEventHandler.scala, RemoteInterface.scala, Routers.scala, Routing.scala, Scheduler.scala, SupervisionConfig.scala, Supervisor.scala, ThreadBasedDispatcher.scala, ThreadPoolBuilder.scala, UUID.java, UUIDGen.java, UUIDHelper.java, UUIDHolder.java, UntypedActor.scala, package.scala, package.scala, pi.scala
-
-askTypeCompletion at pi.scala(52,59)
-================================================================================
-[response] aksTypeCompletion at (52,59)
-retrieved 0 members
-
-================================================================================
-
-askTypeCompletion at pi.scala(55,25)
-================================================================================
-[response] aksTypeCompletion at (55,25)
-retrieved 45 members
-`class Broadcastakka.routing.Routing.Broadcast`
-`method !=(x$1: Any)Boolean`
-`method !=(x$1: AnyRef)Boolean`
-`method ##()Int`
-`method +(other: String)String`
-`method ->[B](y: B)(akka.routing.Routing.type, B)`
-`method ==(x$1: Any)Boolean`
-`method ==(x$1: AnyRef)Boolean`
-`method asInstanceOf[T0]=> T0`
-`method clone()Object`
-`method dispatcherActor(routing: akka.routing.Routing.PF[Any,akka.actor.ActorRef])akka.actor.ActorRef`
-`method dispatcherActor(routing: akka.routing.Routing.PF[Any,akka.actor.ActorRef], msgTransformer: Any => Any)akka.actor.ActorRef`
-`method ensuring(cond: Boolean)akka.routing.Routing.type`
-`method ensuring(cond: Boolean, msg: => Any)akka.routing.Routing.type`
-`method ensuring(cond: akka.routing.Routing.type => Boolean)akka.routing.Routing.type`
-`method ensuring(cond: akka.routing.Routing.type => Boolean, msg: => Any)akka.routing.Routing.type`
-`method eq(x$1: AnyRef)Boolean`
-`method equals(x$1: Any)Boolean`
-`method filter[A, B](filter: akka.routing.Routing.PF[A,Unit], filtered: akka.routing.Routing.PF[A,B])akka.routing.Routing.PF[A,B]`
-`method finalize()Unit`
-`method formatted(fmtstr: String)String`
-`method hashCode()Int`
-`method intercept[A, B](interceptor: A => Unit, interceptee: akka.routing.Routing.PF[A,B])akka.routing.Routing.PF[A,B]`
-`method isInstanceOf[T0]=> Boolean`
-`method loadBalancerActor(actors: => akka.routing.InfiniteIterator[akka.actor.ActorRef])akka.actor.ActorRef`
-`method loggerActor(actorToLog: akka.actor.ActorRef, logger: Any => Unit)akka.actor.ActorRef`
-`method ne(x$1: AnyRef)Boolean`
-`method notify()Unit`
-`method notifyAll()Unit`
-`method synchronized[T0](x$1: T0)T0`
-`method toString()String`
-`method wait()Unit`
-`method wait(x$1: Long)Unit`
-`method wait(x$1: Long, x$2: Int)Unit`
-`method x=> akka.routing.Routing.type`
-`method →[B](y: B)(akka.routing.Routing.type, B)`
-`trait RoutingMessageakka.routing.Routing.RoutingMessage`
-`type PFakka.routing.Routing.PF`
-`value __leftOfArrowakka.routing.Routing.type`
-`value __resultOfEnsuringakka.routing.Routing.type`
-`value selfAny`
-================================================================================
-
-askTypeCompletion at pi.scala(55,73)
-================================================================================
-[response] aksTypeCompletion at (55,73)
-retrieved 131 members
-`method !!![T](message: Any, timeout: Long)(implicit sender: Option[akka.actor.ActorRef])akka.dispatch.Future[T]`
-`method !!(message: Any, timeout: Long)(implicit sender: Option[akka.actor.ActorRef])Option[Any]`
-`method !(message: Any)(implicit sender: Option[akka.actor.ActorRef])Unit`
-`method !=(x$1: Any)Boolean`
-`method !=(x$1: AnyRef)Boolean`
-`method ##()Int`
-`method +(other: String)String`
-`method ->[B](y: B)(akka.actor.ActorRef, B)`
-`method ==(x$1: Any)Boolean`
-`method ==(x$1: AnyRef)Boolean`
-`method actor=> akka.actor.Actor`
-`method actorClass=> Class[_ <: akka.actor.Actor]`
-`method actorClassName=> String`
-`method actorInstance=> java.util.concurrent.atomic.AtomicReference[akka.actor.Actor]`
-`method asInstanceOf[T0]=> T0`
-`method channel=> akka.actor.Channel[Any]`
-`method clone()Object`
-`method compareTo(other: akka.actor.ActorRef)Int`
-`method dispatcher=> akka.dispatch.MessageDispatcher`
-`method dispatcher_=(md: akka.dispatch.MessageDispatcher)Unit`
-`method ensuring(cond: Boolean)akka.actor.ActorRef`
-`method ensuring(cond: Boolean, msg: => Any)akka.actor.ActorRef`
-`method ensuring(cond: akka.actor.ActorRef => Boolean)akka.actor.ActorRef`
-`method ensuring(cond: akka.actor.ActorRef => Boolean, msg: => Any)akka.actor.ActorRef`
-`method eq(x$1: AnyRef)Boolean`
-`method equals(that: Any)Boolean`
-`method exit()Unit`
-`method finalize()Unit`
-`method formatted(fmtstr: String)String`
-`method forward(message: Any)(implicit sender: Some[akka.actor.ActorRef])Any`
-`method forward(message: AnyRef, sender: akka.actor.ActorRef)Unit`
-`method getActorClass()Class[_ <: akka.actor.Actor]`
-`method getActorClassName()String`
-`method getChannel=> akka.actor.Channel[Any]`
-`method getDispatcher()akka.dispatch.MessageDispatcher`
-`method getFaultHandler()akka.config.Supervision.FaultHandlingStrategy`
-`method getHomeAddress()java.net.InetSocketAddress`
-`method getId()String`
-`method getLifeCycle()akka.config.Supervision.LifeCycle`
-`method getLinkedActors()java.util.Map[akka.actor.Uuid,akka.actor.ActorRef]`
-`method getMailboxSize()Int`
-`method getReceiveTimeout()Option[Long]`
-`method getSender()Option[akka.actor.ActorRef]`
-`method getSenderFuture()Option[akka.dispatch.CompletableFuture[Any]]`
-`method getSupervisor()akka.actor.ActorRef`
-`method getTimeout()Long`
-`method getUuid()akka.actor.Uuid`
-`method handleTrapExit(dead: akka.actor.ActorRef, reason: Throwable)Unit`
-`method hashCode()Int`
-`method homeAddress=> Option[java.net.InetSocketAddress]`
-`method id=> String`
-`method id_=(id: String)Unit`
-`method invoke(messageHandle: akka.dispatch.MessageInvocation)Unit`
-`method isBeingRestarted=> Boolean`
-`method isDefinedAt(message: Any)Boolean`
-`method isInstanceOf[T0]=> Boolean`
-`method isRunning=> Boolean`
-`method isShutdown=> Boolean`
-`method isUnstarted=> Boolean`
-`method link(actorRef: akka.actor.ActorRef)Unit`
-`method linkedActors=> java.util.Map[akka.actor.Uuid,akka.actor.ActorRef]`
-`method mailbox=> AnyRef`
-`method mailboxSize=> Int`
-`method mailbox_=(value: AnyRef)AnyRef`
-`method ne(x$1: AnyRef)Boolean`
-`method notify()Unit`
-`method notifyAll()Unit`
-`method postMessageToMailbox(message: Any, senderOption: Option[akka.actor.ActorRef])Unit`
-`method postMessageToMailboxAndCreateFutureResultWithTimeout[T](message: Any, timeout: Long, senderOption: Option[akka.actor.ActorRef], senderFuture: Option[akka.dispatch.CompletableFuture[T]])akka.dispatch.CompletableFuture[T]`
-`method registerSupervisorAsRemoteActor=> Option[akka.actor.Uuid]`
-`method reply(message: Any)Unit`
-`method replySafe(message: AnyRef)Boolean`
-`method replyUnsafe(message: AnyRef)Unit`
-`method reply_?(message: Any)Boolean`
-`method restart(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int])Unit`
-`method restartLinkedActors(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int])Unit`
-`method sendOneWay(message: AnyRef)Unit`
-`method sendOneWay(message: AnyRef, sender: akka.actor.ActorRef)Unit`
-`method sendRequestReply(message: AnyRef)AnyRef`
-`method sendRequestReply(message: AnyRef, sender: akka.actor.ActorRef)AnyRef`
-`method sendRequestReply(message: AnyRef, timeout: Long, sender: akka.actor.ActorRef)AnyRef`
-`method sendRequestReplyFuture[T <: AnyRef](message: AnyRef)akka.dispatch.Future[T]`
-`method sendRequestReplyFuture[T <: AnyRef](message: AnyRef, sender: akka.actor.ActorRef)akka.dispatch.Future[T]`
-`method sendRequestReplyFuture[T <: AnyRef](message: AnyRef, timeout: Long, sender: akka.actor.ActorRef)akka.dispatch.Future[T]`
-`method sender=> Option[akka.actor.ActorRef]`
-`method senderFuture()Option[akka.dispatch.CompletableFuture[Any]]`
-`method setDispatcher(dispatcher: akka.dispatch.MessageDispatcher)Unit`
-`method setFaultHandler(handler: akka.config.Supervision.FaultHandlingStrategy)Unit`
-`method setId(x$1: String)Unit`
-`method setLifeCycle(lifeCycle: akka.config.Supervision.LifeCycle)Unit`
-`method setReceiveTimeout(timeout: Long)Unit`
-`method setTimeout(x$1: Long)Unit`
-`method spawn(clazz: Class[_ <: akka.actor.Actor])akka.actor.ActorRef`
-`method spawnLink(clazz: Class[_ <: akka.actor.Actor])akka.actor.ActorRef`
-`method spawnLinkRemote(clazz: Class[_ <: akka.actor.Actor], hostname: String, port: Int, timeout: Long)akka.actor.ActorRef`
-`method spawnLinkRemote[T <: akka.actor.Actor](hostname: String, port: Int, timeout: Long)(implicit evidence$4: ClassTag[T])akka.actor.ActorRef`
-`method spawnLink[T <: akka.actor.Actor](implicit evidence$3: ClassTag[T])akka.actor.ActorRef`
-`method spawnRemote(clazz: Class[_ <: akka.actor.Actor], hostname: String, port: Int, timeout: Long)akka.actor.ActorRef`
-`method spawnRemote[T <: akka.actor.Actor](hostname: String, port: Int, timeout: Long)(implicit evidence$2: ClassTag[T])akka.actor.ActorRef`
-`method spawn[T <: akka.actor.Actor](implicit evidence$1: ClassTag[T])akka.actor.ActorRef`
-`method start()akka.actor.ActorRef`
-`method startLink(actorRef: akka.actor.ActorRef)Unit`
-`method stop()Unit`
-`method supervisor=> Option[akka.actor.ActorRef]`
-`method supervisor_=(sup: Option[akka.actor.ActorRef])Unit`
-`method synchronized[T0](x$1: T0)T0`
-`method toString()String`
-`method unlink(actorRef: akka.actor.ActorRef)Unit`
-`method uuid=> akka.actor.Uuid`
-`method uuid_=(uid: akka.actor.Uuid)Unit`
-`method wait()Unit`
-`method wait(x$1: Long)Unit`
-`method wait(x$1: Long, x$2: Int)Unit`
-`method x=> akka.actor.ActorRef`
-`method →[B](y: B)(akka.actor.ActorRef, B)`
-`value __leftOfArrowakka.actor.ActorRef`
-`value __resultOfEnsuringakka.actor.ActorRef`
-`value selfAny`
-`variable _statusakka.actor.ActorRefInternals.StatusType`
-`variable _uuidakka.actor.Uuid`
-`variable currentMessageakka.dispatch.MessageInvocation`
-`variable faultHandlerakka.config.Supervision.FaultHandlingStrategy`
-`variable hotswapscala.collection.immutable.Stack[PartialFunction[Any,Unit]]`
-`variable idString`
-`variable lifeCycleakka.config.Supervision.LifeCycle`
-`variable receiveTimeoutOption[Long]`
-`variable timeoutLong`
-================================================================================
-
-askTypeCompletion at pi.scala(65,15)
-================================================================================
-[response] aksTypeCompletion at (65,15)
-retrieved 131 members
-`method !!![T](message: Any, timeout: Long)(implicit sender: Option[akka.actor.ActorRef])akka.dispatch.Future[T]`
-`method !!(message: Any, timeout: Long)(implicit sender: Option[akka.actor.ActorRef])Option[Any]`
-`method !(message: Any)(implicit sender: Option[akka.actor.ActorRef])Unit`
-`method !=(x$1: Any)Boolean`
-`method !=(x$1: AnyRef)Boolean`
-`method ##()Int`
-`method +(other: String)String`
-`method ->[B](y: B)(akka.actor.ActorRef, B)`
-`method ==(x$1: Any)Boolean`
-`method ==(x$1: AnyRef)Boolean`
-`method actor=> akka.actor.Actor`
-`method actorClass=> Class[_ <: akka.actor.Actor]`
-`method actorClassName=> String`
-`method actorInstance=> java.util.concurrent.atomic.AtomicReference[akka.actor.Actor]`
-`method asInstanceOf[T0]=> T0`
-`method channel=> akka.actor.Channel[Any]`
-`method clone()Object`
-`method compareTo(other: akka.actor.ActorRef)Int`
-`method dispatcher=> akka.dispatch.MessageDispatcher`
-`method dispatcher_=(md: akka.dispatch.MessageDispatcher)Unit`
-`method ensuring(cond: Boolean)akka.actor.ActorRef`
-`method ensuring(cond: Boolean, msg: => Any)akka.actor.ActorRef`
-`method ensuring(cond: akka.actor.ActorRef => Boolean)akka.actor.ActorRef`
-`method ensuring(cond: akka.actor.ActorRef => Boolean, msg: => Any)akka.actor.ActorRef`
-`method eq(x$1: AnyRef)Boolean`
-`method equals(that: Any)Boolean`
-`method exit()Unit`
-`method finalize()Unit`
-`method formatted(fmtstr: String)String`
-`method forward(message: Any)(implicit sender: Some[akka.actor.ActorRef])Any`
-`method forward(message: AnyRef, sender: akka.actor.ActorRef)Unit`
-`method getActorClass()Class[_ <: akka.actor.Actor]`
-`method getActorClassName()String`
-`method getChannel=> akka.actor.Channel[Any]`
-`method getDispatcher()akka.dispatch.MessageDispatcher`
-`method getFaultHandler()akka.config.Supervision.FaultHandlingStrategy`
-`method getHomeAddress()java.net.InetSocketAddress`
-`method getId()String`
-`method getLifeCycle()akka.config.Supervision.LifeCycle`
-`method getLinkedActors()java.util.Map[akka.actor.Uuid,akka.actor.ActorRef]`
-`method getMailboxSize()Int`
-`method getReceiveTimeout()Option[Long]`
-`method getSender()Option[akka.actor.ActorRef]`
-`method getSenderFuture()Option[akka.dispatch.CompletableFuture[Any]]`
-`method getSupervisor()akka.actor.ActorRef`
-`method getTimeout()Long`
-`method getUuid()akka.actor.Uuid`
-`method handleTrapExit(dead: akka.actor.ActorRef, reason: Throwable)Unit`
-`method hashCode()Int`
-`method homeAddress=> Option[java.net.InetSocketAddress]`
-`method id=> String`
-`method id_=(id: String)Unit`
-`method invoke(messageHandle: akka.dispatch.MessageInvocation)Unit`
-`method isBeingRestarted=> Boolean`
-`method isDefinedAt(message: Any)Boolean`
-`method isInstanceOf[T0]=> Boolean`
-`method isRunning=> Boolean`
-`method isShutdown=> Boolean`
-`method isUnstarted=> Boolean`
-`method link(actorRef: akka.actor.ActorRef)Unit`
-`method linkedActors=> java.util.Map[akka.actor.Uuid,akka.actor.ActorRef]`
-`method mailbox=> AnyRef`
-`method mailboxSize=> Int`
-`method mailbox_=(value: AnyRef)AnyRef`
-`method ne(x$1: AnyRef)Boolean`
-`method notify()Unit`
-`method notifyAll()Unit`
-`method postMessageToMailbox(message: Any, senderOption: Option[akka.actor.ActorRef])Unit`
-`method postMessageToMailboxAndCreateFutureResultWithTimeout[T](message: Any, timeout: Long, senderOption: Option[akka.actor.ActorRef], senderFuture: Option[akka.dispatch.CompletableFuture[T]])akka.dispatch.CompletableFuture[T]`
-`method registerSupervisorAsRemoteActor=> Option[akka.actor.Uuid]`
-`method reply(message: Any)Unit`
-`method replySafe(message: AnyRef)Boolean`
-`method replyUnsafe(message: AnyRef)Unit`
-`method reply_?(message: Any)Boolean`
-`method restart(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int])Unit`
-`method restartLinkedActors(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int])Unit`
-`method sendOneWay(message: AnyRef)Unit`
-`method sendOneWay(message: AnyRef, sender: akka.actor.ActorRef)Unit`
-`method sendRequestReply(message: AnyRef)AnyRef`
-`method sendRequestReply(message: AnyRef, sender: akka.actor.ActorRef)AnyRef`
-`method sendRequestReply(message: AnyRef, timeout: Long, sender: akka.actor.ActorRef)AnyRef`
-`method sendRequestReplyFuture[T <: AnyRef](message: AnyRef)akka.dispatch.Future[T]`
-`method sendRequestReplyFuture[T <: AnyRef](message: AnyRef, sender: akka.actor.ActorRef)akka.dispatch.Future[T]`
-`method sendRequestReplyFuture[T <: AnyRef](message: AnyRef, timeout: Long, sender: akka.actor.ActorRef)akka.dispatch.Future[T]`
-`method sender=> Option[akka.actor.ActorRef]`
-`method senderFuture()Option[akka.dispatch.CompletableFuture[Any]]`
-`method setDispatcher(dispatcher: akka.dispatch.MessageDispatcher)Unit`
-`method setFaultHandler(handler: akka.config.Supervision.FaultHandlingStrategy)Unit`
-`method setId(x$1: String)Unit`
-`method setLifeCycle(lifeCycle: akka.config.Supervision.LifeCycle)Unit`
-`method setReceiveTimeout(timeout: Long)Unit`
-`method setTimeout(x$1: Long)Unit`
-`method spawn(clazz: Class[_ <: akka.actor.Actor])akka.actor.ActorRef`
-`method spawnLink(clazz: Class[_ <: akka.actor.Actor])akka.actor.ActorRef`
-`method spawnLinkRemote(clazz: Class[_ <: akka.actor.Actor], hostname: String, port: Int, timeout: Long)akka.actor.ActorRef`
-`method spawnLinkRemote[T <: akka.actor.Actor](hostname: String, port: Int, timeout: Long)(implicit evidence$4: ClassTag[T])akka.actor.ActorRef`
-`method spawnLink[T <: akka.actor.Actor](implicit evidence$3: ClassTag[T])akka.actor.ActorRef`
-`method spawnRemote(clazz: Class[_ <: akka.actor.Actor], hostname: String, port: Int, timeout: Long)akka.actor.ActorRef`
-`method spawnRemote[T <: akka.actor.Actor](hostname: String, port: Int, timeout: Long)(implicit evidence$2: ClassTag[T])akka.actor.ActorRef`
-`method spawn[T <: akka.actor.Actor](implicit evidence$1: ClassTag[T])akka.actor.ActorRef`
-`method start()akka.actor.ActorRef`
-`method startLink(actorRef: akka.actor.ActorRef)Unit`
-`method stop()Unit`
-`method supervisor=> Option[akka.actor.ActorRef]`
-`method supervisor_=(sup: Option[akka.actor.ActorRef])Unit`
-`method synchronized[T0](x$1: T0)T0`
-`method toString()String`
-`method unlink(actorRef: akka.actor.ActorRef)Unit`
-`method uuid=> akka.actor.Uuid`
-`method uuid_=(uid: akka.actor.Uuid)Unit`
-`method wait()Unit`
-`method wait(x$1: Long)Unit`
-`method wait(x$1: Long, x$2: Int)Unit`
-`method x=> akka.actor.ActorRef`
-`method →[B](y: B)(akka.actor.ActorRef, B)`
-`value __leftOfArrowakka.actor.ActorRef`
-`value __resultOfEnsuringakka.actor.ActorRef`
-`value selfAny`
-`variable _statusakka.actor.ActorRefInternals.StatusType`
-`variable _uuidakka.actor.Uuid`
-`variable currentMessageakka.dispatch.MessageInvocation`
-`variable faultHandlerakka.config.Supervision.FaultHandlingStrategy`
-`variable hotswapscala.collection.immutable.Stack[PartialFunction[Any,Unit]]`
-`variable idString`
-`variable lifeCycleakka.config.Supervision.LifeCycle`
-`variable receiveTimeoutOption[Long]`
-`variable timeoutLong`
-================================================================================
-
-askTypeCompletion at pi.scala(74,46)
-================================================================================
-[response] aksTypeCompletion at (74,46)
-retrieved 131 members
-`method !!![T](message: Any, timeout: Long)(implicit sender: Option[akka.actor.ActorRef])akka.dispatch.Future[T]`
-`method !!(message: Any, timeout: Long)(implicit sender: Option[akka.actor.ActorRef])Option[Any]`
-`method !(message: Any)(implicit sender: Option[akka.actor.ActorRef])Unit`
-`method !=(x$1: Any)Boolean`
-`method !=(x$1: AnyRef)Boolean`
-`method ##()Int`
-`method +(other: String)String`
-`method ->[B](y: B)(akka.actor.ScalaActorRef, B)`
-`method ==(x$1: Any)Boolean`
-`method ==(x$1: AnyRef)Boolean`
-`method actor=> akka.actor.Actor`
-`method actorClass=> Class[_ <: akka.actor.Actor]`
-`method actorClassName=> String`
-`method actorInstance=> java.util.concurrent.atomic.AtomicReference[akka.actor.Actor]`
-`method asInstanceOf[T0]=> T0`
-`method channel=> akka.actor.Channel[Any]`
-`method clone()Object`
-`method compareTo(other: akka.actor.ActorRef)Int`
-`method dispatcher=> akka.dispatch.MessageDispatcher`
-`method dispatcher_=(md: akka.dispatch.MessageDispatcher)Unit`
-`method ensuring(cond: Boolean)akka.actor.ScalaActorRef`
-`method ensuring(cond: Boolean, msg: => Any)akka.actor.ScalaActorRef`
-`method ensuring(cond: akka.actor.ScalaActorRef => Boolean)akka.actor.ScalaActorRef`
-`method ensuring(cond: akka.actor.ScalaActorRef => Boolean, msg: => Any)akka.actor.ScalaActorRef`
-`method eq(x$1: AnyRef)Boolean`
-`method equals(x$1: Any)Boolean`
-`method exit()Unit`
-`method finalize()Unit`
-`method formatted(fmtstr: String)String`
-`method forward(message: Any)(implicit sender: Some[akka.actor.ActorRef])Any`
-`method forward(message: AnyRef, sender: akka.actor.ActorRef)Unit`
-`method getActorClass()Class[_ <: akka.actor.Actor]`
-`method getActorClassName()String`
-`method getChannel=> akka.actor.Channel[Any]`
-`method getDispatcher()akka.dispatch.MessageDispatcher`
-`method getFaultHandler()akka.config.Supervision.FaultHandlingStrategy`
-`method getHomeAddress()java.net.InetSocketAddress`
-`method getId()String`
-`method getLifeCycle()akka.config.Supervision.LifeCycle`
-`method getLinkedActors()java.util.Map[akka.actor.Uuid,akka.actor.ActorRef]`
-`method getMailboxSize()Int`
-`method getReceiveTimeout()Option[Long]`
-`method getSender()Option[akka.actor.ActorRef]`
-`method getSenderFuture()Option[akka.dispatch.CompletableFuture[Any]]`
-`method getSupervisor()akka.actor.ActorRef`
-`method getTimeout()Long`
-`method getUuid()akka.actor.Uuid`
-`method handleTrapExit(dead: akka.actor.ActorRef, reason: Throwable)Unit`
-`method hashCode()Int`
-`method homeAddress=> Option[java.net.InetSocketAddress]`
-`method id=> String`
-`method id_=(id: String)Unit`
-`method invoke(messageHandle: akka.dispatch.MessageInvocation)Unit`
-`method isBeingRestarted=> Boolean`
-`method isDefinedAt(message: Any)Boolean`
-`method isInstanceOf[T0]=> Boolean`
-`method isRunning=> Boolean`
-`method isShutdown=> Boolean`
-`method isUnstarted=> Boolean`
-`method link(actorRef: akka.actor.ActorRef)Unit`
-`method linkedActors=> java.util.Map[akka.actor.Uuid,akka.actor.ActorRef]`
-`method mailbox=> AnyRef`
-`method mailboxSize=> Int`
-`method mailbox_=(value: AnyRef)AnyRef`
-`method ne(x$1: AnyRef)Boolean`
-`method notify()Unit`
-`method notifyAll()Unit`
-`method postMessageToMailbox(message: Any, senderOption: Option[akka.actor.ActorRef])Unit`
-`method postMessageToMailboxAndCreateFutureResultWithTimeout[T](message: Any, timeout: Long, senderOption: Option[akka.actor.ActorRef], senderFuture: Option[akka.dispatch.CompletableFuture[T]])akka.dispatch.CompletableFuture[T]`
-`method registerSupervisorAsRemoteActor=> Option[akka.actor.Uuid]`
-`method reply(message: Any)Unit`
-`method replySafe(message: AnyRef)Boolean`
-`method replyUnsafe(message: AnyRef)Unit`
-`method reply_?(message: Any)Boolean`
-`method restart(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int])Unit`
-`method restartLinkedActors(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int])Unit`
-`method sendOneWay(message: AnyRef)Unit`
-`method sendOneWay(message: AnyRef, sender: akka.actor.ActorRef)Unit`
-`method sendRequestReply(message: AnyRef)AnyRef`
-`method sendRequestReply(message: AnyRef, sender: akka.actor.ActorRef)AnyRef`
-`method sendRequestReply(message: AnyRef, timeout: Long, sender: akka.actor.ActorRef)AnyRef`
-`method sendRequestReplyFuture[T <: AnyRef](message: AnyRef)akka.dispatch.Future[T]`
-`method sendRequestReplyFuture[T <: AnyRef](message: AnyRef, sender: akka.actor.ActorRef)akka.dispatch.Future[T]`
-`method sendRequestReplyFuture[T <: AnyRef](message: AnyRef, timeout: Long, sender: akka.actor.ActorRef)akka.dispatch.Future[T]`
-`method sender=> Option[akka.actor.ActorRef]`
-`method senderFuture()Option[akka.dispatch.CompletableFuture[Any]]`
-`method setDispatcher(dispatcher: akka.dispatch.MessageDispatcher)Unit`
-`method setFaultHandler(x$1: akka.config.Supervision.FaultHandlingStrategy)Unit`
-`method setId(x$1: String)Unit`
-`method setLifeCycle(x$1: akka.config.Supervision.LifeCycle)Unit`
-`method setReceiveTimeout(timeout: Long)Unit`
-`method setTimeout(x$1: Long)Unit`
-`method spawn(clazz: Class[_ <: akka.actor.Actor])akka.actor.ActorRef`
-`method spawnLink(clazz: Class[_ <: akka.actor.Actor])akka.actor.ActorRef`
-`method spawnLinkRemote(clazz: Class[_ <: akka.actor.Actor], hostname: String, port: Int, timeout: Long)akka.actor.ActorRef`
-`method spawnLinkRemote[T <: akka.actor.Actor](hostname: String, port: Int, timeout: Long)(implicit evidence$4: ClassTag[T])akka.actor.ActorRef`
-`method spawnLink[T <: akka.actor.Actor](implicit evidence$3: ClassTag[T])akka.actor.ActorRef`
-`method spawnRemote(clazz: Class[_ <: akka.actor.Actor], hostname: String, port: Int, timeout: Long)akka.actor.ActorRef`
-`method spawnRemote[T <: akka.actor.Actor](hostname: String, port: Int, timeout: Long)(implicit evidence$2: ClassTag[T])akka.actor.ActorRef`
-`method spawn[T <: akka.actor.Actor](implicit evidence$1: ClassTag[T])akka.actor.ActorRef`
-`method start()akka.actor.ActorRef`
-`method startLink(actorRef: akka.actor.ActorRef)Unit`
-`method stop()Unit`
-`method supervisor=> Option[akka.actor.ActorRef]`
-`method supervisor_=(sup: Option[akka.actor.ActorRef])Unit`
-`method synchronized[T0](x$1: T0)T0`
-`method toString()String`
-`method unlink(actorRef: akka.actor.ActorRef)Unit`
-`method uuid=> akka.actor.Uuid`
-`method uuid_=(uid: akka.actor.Uuid)Unit`
-`method wait()Unit`
-`method wait(x$1: Long)Unit`
-`method wait(x$1: Long, x$2: Int)Unit`
-`method x=> akka.actor.ScalaActorRef`
-`method →[B](y: B)(akka.actor.ScalaActorRef, B)`
-`value __leftOfArrowakka.actor.ScalaActorRef`
-`value __resultOfEnsuringakka.actor.ScalaActorRef`
-`value selfAny`
-`variable _statusakka.actor.ActorRefInternals.StatusType`
-`variable _uuidakka.actor.Uuid`
-`variable currentMessageakka.dispatch.MessageInvocation`
-`variable faultHandlerakka.config.Supervision.FaultHandlingStrategy`
-`variable hotswapscala.collection.immutable.Stack[PartialFunction[Any,Unit]]`
-`variable idString`
-`variable lifeCycleakka.config.Supervision.LifeCycle`
-`variable receiveTimeoutOption[Long]`
-`variable timeoutLong`
-================================================================================
-
-askType at pi.scala(34,16)
-================================================================================
-[response] askTypeAt at (34,16)
-def receive: PartialFunction[Any,Unit] = ((x0$3: Any) => x0$3 match {
- case (start: Int, nrOfElements: Int)Pi.Work((start @ _), (nrOfElements @ _)) => Worker.this.self.reply(Pi.this.Result.apply(Worker.this.calculatePiFor(start, nrOfElements)))
-})
-================================================================================
-
-askHyperlinkPos for `calculate` at (11,11) pi.scala
-================================================================================
-[response] found askHyperlinkPos for `calculate` at (93,7) pi.scala
-================================================================================
-
-askHyperlinkPos for `PiMessage` at (17,41) pi.scala
-================================================================================
-[response] found askHyperlinkPos for `PiMessage` at (16,16) pi.scala
-================================================================================
-
-askHyperlinkPos for `Actor` at (24,28) pi.scala
-================================================================================
-[response] found askHyperlinkPos for `Actor` at (289,7) Actor.scala
-================================================================================
-
-askHyperlinkPos for `reply` at (36,18) pi.scala
-================================================================================
-[response] found askHyperlinkPos for `reply` at (1382,7) ActorRef.scala
-================================================================================
-
-askHyperlinkPos for `nrOfResults` at (73,19) pi.scala
-================================================================================
-[response] found askHyperlinkPos for `nrOfResults` at (48,9) pi.scala
-================================================================================
-
-askHyperlinkPos for `latch` at (86,11) pi.scala
-================================================================================
-[response] found askHyperlinkPos for `latch` at (44,61) pi.scala
-================================================================================
diff --git a/test/disabled/presentation/akka.flags b/test/disabled/presentation/akka.flags
deleted file mode 100644
index 9bf2878f62..0000000000
--- a/test/disabled/presentation/akka.flags
+++ /dev/null
@@ -1,18 +0,0 @@
-# This file contains command line options that are passed to the presentation compiler
-# Lines starting with # are stripped, and you can split arguments on several lines.
-
-# The -bootclasspath option is treated specially by the test framework: if it's not specified
-# in this file, the presentation compiler will pick up the scala-library/compiler that's on the
-# java classpath used to run this test (usually build/pack)
-
-# Any option can be passed this way, like presentation debug
-# -Ypresentation-debug -Ypresentation-verbose
-
-# the classpath is relative to the current working directory. That means it depends where you're
-# running partest from. Run it from the root scala checkout for these files to resolve correctly
-# (by default when running 'ant test', or 'test/partest'). Paths use Unix separators, the test
-# framework translates them to the platform dependent representation.
-# -bootclasspath lib/scala-compiler.jar:lib/scala-library.jar
-
-# the following line would test using the quick compiler
-# -bootclasspath build/quick/classes/compiler:build/quick/classes/library
diff --git a/test/disabled/presentation/akka/Runner.scala b/test/disabled/presentation/akka/Runner.scala
deleted file mode 100644
index 14a6aa8350..0000000000
--- a/test/disabled/presentation/akka/Runner.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-import scala.tools.nsc.interactive.tests.InteractiveTest
-
-object Test extends InteractiveTest
diff --git a/test/disabled/presentation/akka/src/akka/AkkaException.scala b/test/disabled/presentation/akka/src/akka/AkkaException.scala
deleted file mode 100644
index 155a7a16b5..0000000000
--- a/test/disabled/presentation/akka/src/akka/AkkaException.scala
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka
-
-import akka.actor.newUuid
-import java.net.{ InetAddress, UnknownHostException }
-
-/**
- * Akka base Exception. Each Exception gets:
- * <ul>
- * <li>a uuid for tracking purposes</li>
- * <li>toString that includes exception name, message, uuid, and the stacktrace</li>
- * </ul>
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-class AkkaException(message: String = "", cause: Throwable = null) extends RuntimeException(message, cause) with Serializable {
- val uuid = "%s_%s".format(AkkaException.hostname, newUuid)
-
- override lazy val toString =
- "%s: %s\n[%s]\n%s".format(getClass.getName, message, uuid, stackTraceToString)
-
- def stackTraceToString = {
- val trace = getStackTrace
- val sb = new StringBuffer
- for (i ← 0 until trace.length)
- sb.append("\tat %s\n" format trace(i))
- sb.toString
- }
-}
-
-object AkkaException {
- val hostname = try {
- InetAddress.getLocalHost.getHostName
- } catch {
- case e: UnknownHostException => "unknown"
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/actor/Actor.scala b/test/disabled/presentation/akka/src/akka/actor/Actor.scala
deleted file mode 100644
index b9bc51b635..0000000000
--- a/test/disabled/presentation/akka/src/akka/actor/Actor.scala
+++ /dev/null
@@ -1,503 +0,0 @@
-/** Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.actor
-
-import akka.dispatch._
-import akka.config.Config._
-import akka.util.Helpers.{ narrow, narrowSilently }
-import akka.util.ListenerManagement
-import akka.AkkaException
-
-import scala.beans.BeanProperty
-import akka.util.{ ReflectiveAccess, Duration }
-import akka.remoteinterface.RemoteSupport
-import akka.japi.{ Creator, Procedure }
-import java.lang.reflect.InvocationTargetException
-
-/** Life-cycle messages for the Actors
- */
-sealed trait LifeCycleMessage extends Serializable
-
-/* Marker trait to show which Messages are automatically handled by Akka */
-sealed trait AutoReceivedMessage { self: LifeCycleMessage => }
-
-case class HotSwap(code: ActorRef => Actor.Receive, discardOld: Boolean = true)
- extends AutoReceivedMessage with LifeCycleMessage {
-
- /** Java API
- */
- def this(code: akka.japi.Function[ActorRef, Procedure[Any]], discardOld: Boolean) =
- this((self: ActorRef) => {
- val behavior = code(self)
- val result: Actor.Receive = { case msg => behavior(msg) }
- result
- }, discardOld)
-
- /** Java API with default non-stacking behavior
- */
- def this(code: akka.japi.Function[ActorRef, Procedure[Any]]) = this(code, true)
-}
-
-case object RevertHotSwap extends AutoReceivedMessage with LifeCycleMessage
-
-case class Restart(reason: Throwable) extends AutoReceivedMessage with LifeCycleMessage
-
-case class Exit(dead: ActorRef, killer: Throwable) extends AutoReceivedMessage with LifeCycleMessage
-
-case class Link(child: ActorRef) extends AutoReceivedMessage with LifeCycleMessage
-
-case class Unlink(child: ActorRef) extends AutoReceivedMessage with LifeCycleMessage
-
-case class UnlinkAndStop(child: ActorRef) extends AutoReceivedMessage with LifeCycleMessage
-
-case object PoisonPill extends AutoReceivedMessage with LifeCycleMessage
-
-case object Kill extends AutoReceivedMessage with LifeCycleMessage
-
-case object ReceiveTimeout extends LifeCycleMessage
-
-case class MaximumNumberOfRestartsWithinTimeRangeReached(
- @BeanProperty val victim: ActorRef,
- @BeanProperty val maxNrOfRetries: Option[Int],
- @BeanProperty val withinTimeRange: Option[Int],
- @BeanProperty val lastExceptionCausingRestart: Throwable) extends LifeCycleMessage
-
-// Exceptions for Actors
-class ActorStartException private[akka] (message: String, cause: Throwable = null) extends AkkaException(message, cause)
-class IllegalActorStateException private[akka] (message: String, cause: Throwable = null) extends AkkaException(message, cause)
-class ActorKilledException private[akka] (message: String, cause: Throwable = null) extends AkkaException(message, cause)
-class ActorInitializationException private[akka] (message: String, cause: Throwable = null) extends AkkaException(message, cause)
-class ActorTimeoutException private[akka] (message: String, cause: Throwable = null) extends AkkaException(message, cause)
-class InvalidMessageException private[akka] (message: String, cause: Throwable = null) extends AkkaException(message, cause)
-
-/** This message is thrown by default when an Actors behavior doesn't match a message
- */
-case class UnhandledMessageException(msg: Any, ref: ActorRef) extends Exception {
- override def getMessage() = "Actor %s does not handle [%s]".format(ref, msg)
- override def fillInStackTrace() = this //Don't waste cycles generating stack trace
-}
-
-/** Actor factory module with factory methods for creating various kinds of Actors.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-object Actor extends ListenerManagement {
-
- /** Add shutdown cleanups
- */
- private[akka] lazy val shutdownHook = {
- val hook = new Runnable {
- override def run {
- // Clear Thread.subclassAudits
- val tf = classOf[java.lang.Thread].getDeclaredField("subclassAudits")
- tf.setAccessible(true)
- val subclassAudits = tf.get(null).asInstanceOf[java.util.Map[_, _]]
- subclassAudits synchronized { subclassAudits.clear }
- }
- }
- Runtime.getRuntime.addShutdownHook(new Thread(hook))
- hook
- }
-
- val registry = new ActorRegistry
-
- lazy val remote: RemoteSupport = {
- ReflectiveAccess
- .Remote
- .defaultRemoteSupport
- .map(_())
- .getOrElse(throw new UnsupportedOperationException("You need to have akka-remote.jar on classpath"))
- }
-
- private[akka] val TIMEOUT = Duration(config.getInt("akka.actor.timeout", 5), TIME_UNIT).toMillis
- private[akka] val SERIALIZE_MESSAGES = config.getBool("akka.actor.serialize-messages", false)
-
- /** A Receive is a convenience type that defines actor message behavior currently modeled as
- * a PartialFunction[Any, Unit].
- */
- type Receive = PartialFunction[Any, Unit]
-
- private[actor] val actorRefInCreation = new ThreadLocal[Option[ActorRef]] {
- override def initialValue = None
- }
-
- /** Creates an ActorRef out of the Actor with type T.
- * <pre>
- * import Actor._
- * val actor = actorOf[MyActor]
- * actor.start()
- * actor ! message
- * actor.stop()
- * </pre>
- * You can create and start the actor in one statement like this:
- * <pre>
- * val actor = actorOf[MyActor].start()
- * </pre>
- */
- def actorOf[T <: Actor: ClassTag]: ActorRef = actorOf(classTag[T].erasure.asInstanceOf[Class[_ <: Actor]])
-
- /** Creates an ActorRef out of the Actor of the specified Class.
- * <pre>
- * import Actor._
- * val actor = actorOf(classOf[MyActor])
- * actor.start()
- * actor ! message
- * actor.stop()
- * </pre>
- * You can create and start the actor in one statement like this:
- * <pre>
- * val actor = actorOf(classOf[MyActor]).start()
- * </pre>
- */
- def actorOf(clazz: Class[_ <: Actor]): ActorRef = new LocalActorRef(() => {
- import ReflectiveAccess.{ createInstance, noParams, noArgs }
- createInstance[Actor](clazz.asInstanceOf[Class[_]], noParams, noArgs) match {
- case Right(actor) => actor
- case Left(exception) =>
- val cause = exception match {
- case i: InvocationTargetException => i.getTargetException
- case _ => exception
- }
-
- throw new ActorInitializationException(
- "Could not instantiate Actor of " + clazz +
- "\nMake sure Actor is NOT defined inside a class/trait," +
- "\nif so put it outside the class/trait, f.e. in a companion object," +
- "\nOR try to change: 'actorOf[MyActor]' to 'actorOf(new MyActor)'.", cause)
- }
-
- }, None)
-
- /** Creates an ActorRef out of the Actor. Allows you to pass in a factory function
- * that creates the Actor. Please note that this function can be invoked multiple
- * times if for example the Actor is supervised and needs to be restarted.
- * <p/>
- * This function should <b>NOT</b> be used for remote actors.
- * <pre>
- * import Actor._
- * val actor = actorOf(new MyActor)
- * actor.start()
- * actor ! message
- * actor.stop()
- * </pre>
- * You can create and start the actor in one statement like this:
- * <pre>
- * val actor = actorOf(new MyActor).start()
- * </pre>
- */
- def actorOf(factory: => Actor): ActorRef = new LocalActorRef(() => factory, None)
-
- /** Creates an ActorRef out of the Actor. Allows you to pass in a factory (Creator<Actor>)
- * that creates the Actor. Please note that this function can be invoked multiple
- * times if for example the Actor is supervised and needs to be restarted.
- * <p/>
- * This function should <b>NOT</b> be used for remote actors.
- * JAVA API
- */
- def actorOf(creator: Creator[Actor]): ActorRef = new LocalActorRef(() => creator.create, None)
-
- /** Use to spawn out a block of code in an event-driven actor. Will shut actor down when
- * the block has been executed.
- * <p/>
- * NOTE: If used from within an Actor then has to be qualified with 'Actor.spawn' since
- * there is a method 'spawn[ActorType]' in the Actor trait already.
- * Example:
- * <pre>
- * import Actor.{spawn}
- *
- * spawn {
- * ... // do stuff
- * }
- * </pre>
- */
- def spawn(body: => Unit)(implicit dispatcher: MessageDispatcher = Dispatchers.defaultGlobalDispatcher): Unit = {
- case object Spawn
- actorOf(new Actor() {
- self.dispatcher = dispatcher
- def receive = {
- case Spawn => try { body } finally { self.stop() }
- }
- }).start() ! Spawn
- }
-
- /** Implicitly converts the given Option[Any] to a AnyOptionAsTypedOption which offers the method <code>as[T]</code>
- * to convert an Option[Any] to an Option[T].
- */
- implicit def toAnyOptionAsTypedOption(anyOption: Option[Any]) = new AnyOptionAsTypedOption(anyOption)
-
- /** Implicitly converts the given Future[_] to a AnyOptionAsTypedOption which offers the method <code>as[T]</code>
- * to convert an Option[Any] to an Option[T].
- * This means that the following code is equivalent:
- * (actor !! "foo").as[Int] (Deprecated)
- * and
- * (actor !!! "foo").as[Int] (Recommended)
- */
- implicit def futureToAnyOptionAsTypedOption(anyFuture: Future[_]) = new AnyOptionAsTypedOption({
- try { anyFuture.await } catch { case t: FutureTimeoutException => }
- anyFuture.resultOrException
- })
-}
-
-/** Actor base trait that should be extended by or mixed to create an Actor with the semantics of the 'Actor Model':
- * <a href="http://en.wikipedia.org/wiki/Actor_model">http://en.wikipedia.org/wiki/Actor_model</a>
- * <p/>
- * An actor has a well-defined (non-cyclic) life-cycle.
- * <pre>
- * => NEW (newly created actor) - can't receive messages (yet)
- * => STARTED (when 'start' is invoked) - can receive messages
- * => SHUT DOWN (when 'exit' is invoked) - can't do anything
- * </pre>
- *
- * <p/>
- * The Actor's API is available in the 'self' member variable.
- *
- * <p/>
- * Here you find functions like:
- * - !, !!, !!! and forward
- * - link, unlink, startLink, spawnLink etc
- * - makeRemote etc.
- * - start, stop
- * - etc.
- *
- * <p/>
- * Here you also find fields like
- * - dispatcher = ...
- * - id = ...
- * - lifeCycle = ...
- * - faultHandler = ...
- * - trapExit = ...
- * - etc.
- *
- * <p/>
- * This means that to use them you have to prefix them with 'self', like this: <tt>self ! Message</tt>
- *
- * However, for convenience you can import these functions and fields like below, which will allow you do
- * drop the 'self' prefix:
- * <pre>
- * class MyActor extends Actor {
- * import self._
- * id = ...
- * dispatcher = ...
- * spawnLink[OtherActor]
- * ...
- * }
- * </pre>
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-trait Actor {
-
- /** Type alias because traits cannot have companion objects.
- */
- type Receive = Actor.Receive
-
- /*
- * Some[ActorRef] representation of the 'self' ActorRef reference.
- * <p/>
- * Mainly for internal use, functions as the implicit sender references when invoking
- * the 'forward' function.
- */
- @transient
- implicit val someSelf: Some[ActorRef] = {
- val optRef = Actor.actorRefInCreation.get
- if (optRef.isEmpty) throw new ActorInitializationException(
- "ActorRef for instance of actor [" + getClass.getName + "] is not in scope." +
- "\n\tYou can not create an instance of an actor explicitly using 'new MyActor'." +
- "\n\tYou have to use one of the factory methods in the 'Actor' object to create a new actor." +
- "\n\tEither use:" +
- "\n\t\t'val actor = Actor.actorOf[MyActor]', or" +
- "\n\t\t'val actor = Actor.actorOf(new MyActor(..))'")
- Actor.actorRefInCreation.set(None)
- optRef.asInstanceOf[Some[ActorRef]].get.id = getClass.getName //FIXME: Is this needed?
- optRef.asInstanceOf[Some[ActorRef]]
- }
-
- /*
- * Option[ActorRef] representation of the 'self' ActorRef reference.
- * <p/>
- * Mainly for internal use, functions as the implicit sender references when invoking
- * one of the message send functions ('!', '!!' and '!!!').
- */
- implicit def optionSelf: Option[ActorRef] = someSelf
-
- /** The 'self' field holds the ActorRef for this actor.
- * <p/>
- * Can be used to send messages to itself:
- * <pre>
- * self ! message
- * </pre>
- * Here you also find most of the Actor API.
- * <p/>
- * For example fields like:
- * <pre>
- * self.dispatcher = ...
- * self.trapExit = ...
- * self.faultHandler = ...
- * self.lifeCycle = ...
- * self.sender
- * </pre>
- * <p/>
- * Here you also find methods like:
- * <pre>
- * self.reply(..)
- * self.link(..)
- * self.unlink(..)
- * self.start(..)
- * self.stop(..)
- * </pre>
- */
- @transient
- val self: ScalaActorRef = someSelf.get
-
- /** User overridable callback/setting.
- * <p/>
- * Partial function implementing the actor logic.
- * To be implemented by concrete actor class.
- * <p/>
- * Example code:
- * <pre>
- * def receive = {
- * case Ping =&gt;
- * println("got a 'Ping' message")
- * self.reply("pong")
- *
- * case OneWay =&gt;
- * println("got a 'OneWay' message")
- *
- * case unknown =&gt;
- * println("unknown message: " + unknown)
- * }
- * </pre>
- */
- protected def receive: Receive
-
- /** User overridable callback.
- * <p/>
- * Is called when an Actor is started by invoking 'actor.start()'.
- */
- def preStart() {}
-
- /** User overridable callback.
- * <p/>
- * Is called when 'actor.stop()' is invoked.
- */
- def postStop() {}
-
- /** User overridable callback.
- * <p/>
- * Is called on a crashed Actor right BEFORE it is restarted to allow clean up of resources before Actor is terminated.
- */
- def preRestart(reason: Throwable) {}
-
- /** User overridable callback.
- * <p/>
- * Is called right AFTER restart on the newly created Actor to allow reinitialization after an Actor crash.
- */
- def postRestart(reason: Throwable) {}
-
- /** User overridable callback.
- * <p/>
- * Is called when a message isn't handled by the current behavior of the actor
- * by default it throws an UnhandledMessageException
- */
- def unhandled(msg: Any) {
- throw new UnhandledMessageException(msg, self)
- }
-
- /** Is the actor able to handle the message passed in as arguments?
- */
- def isDefinedAt(message: Any): Boolean = {
- val behaviorStack = self.hotswap
- message match { //Same logic as apply(msg) but without the unhandled catch-all
- case l: AutoReceivedMessage => true
- case msg if behaviorStack.nonEmpty &&
- behaviorStack.head.isDefinedAt(msg) => true
- case msg if behaviorStack.isEmpty &&
- processingBehavior.isDefinedAt(msg) => true
- case _ => false
- }
- }
-
- /** Changes the Actor's behavior to become the new 'Receive' (PartialFunction[Any, Unit]) handler.
- * Puts the behavior on top of the hotswap stack.
- * If "discardOld" is true, an unbecome will be issued prior to pushing the new behavior to the stack
- */
- def become(behavior: Receive, discardOld: Boolean = true) {
- if (discardOld) unbecome()
- self.hotswap = self.hotswap.push(behavior)
- }
-
- /** Reverts the Actor behavior to the previous one in the hotswap stack.
- */
- def unbecome(): Unit = {
- val h = self.hotswap
- if (h.nonEmpty) self.hotswap = h.pop
- }
-
- // =========================================
- // ==== INTERNAL IMPLEMENTATION DETAILS ====
- // =========================================
-
- private[akka] final def apply(msg: Any) = {
- if (msg.isInstanceOf[AnyRef] && (msg.asInstanceOf[AnyRef] eq null))
- throw new InvalidMessageException("Message from [" + self.sender + "] to [" + self.toString + "] is null")
- val behaviorStack = self.hotswap
- msg match {
- case l: AutoReceivedMessage => autoReceiveMessage(l)
- case msg if behaviorStack.nonEmpty &&
- behaviorStack.head.isDefinedAt(msg) => behaviorStack.head.apply(msg)
- case msg if behaviorStack.isEmpty &&
- processingBehavior.isDefinedAt(msg) => processingBehavior.apply(msg)
- case unknown => unhandled(unknown) //This is the only line that differs from processingbehavior
- }
- }
-
- private final def autoReceiveMessage(msg: AutoReceivedMessage): Unit = msg match {
- case HotSwap(code, discardOld) => become(code(self), discardOld)
- case RevertHotSwap => unbecome()
- case Exit(dead, reason) => self.handleTrapExit(dead, reason)
- case Link(child) => self.link(child)
- case Unlink(child) => self.unlink(child)
- case UnlinkAndStop(child) => self.unlink(child); child.stop()
- case Restart(reason) => throw reason
- case Kill => throw new ActorKilledException("Kill")
- case PoisonPill =>
- val f = self.senderFuture
- self.stop()
- if (f.isDefined) f.get.completeWithException(new ActorKilledException("PoisonPill"))
- }
-
- private lazy val processingBehavior = receive //ProcessingBehavior is the original behavior
-}
-
-private[actor] class AnyOptionAsTypedOption(anyOption: Option[Any]) {
-
- /** Convenience helper to cast the given Option of Any to an Option of the given type. Will throw a ClassCastException
- * if the actual type is not assignable from the given one.
- */
- def as[T]: Option[T] = narrow[T](anyOption)
-
- /** Convenience helper to cast the given Option of Any to an Option of the given type. Will swallow a possible
- * ClassCastException and return None in that case.
- */
- def asSilently[T: ClassTag]: Option[T] = narrowSilently[T](anyOption)
-}
-
-/** Marker interface for proxyable actors (such as typed actor).
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-trait Proxyable {
- private[actor] def swapProxiedActor(newInstance: Actor)
-}
-
-/** Represents the different Actor types.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-sealed trait ActorType
-object ActorType {
- case object ScalaActor extends ActorType
- case object TypedActor extends ActorType
-}
diff --git a/test/disabled/presentation/akka/src/akka/actor/ActorRef.scala b/test/disabled/presentation/akka/src/akka/actor/ActorRef.scala
deleted file mode 100644
index 97bb710e29..0000000000
--- a/test/disabled/presentation/akka/src/akka/actor/ActorRef.scala
+++ /dev/null
@@ -1,1433 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.actor
-
-import akka.event.EventHandler
-import akka.dispatch._
-import akka.config.Supervision._
-import akka.util._
-import ReflectiveAccess._
-
-import java.net.InetSocketAddress
-import java.util.concurrent.atomic.AtomicReference
-import java.util.concurrent.{ ScheduledFuture, ConcurrentHashMap, TimeUnit }
-import java.util.{ Map => JMap }
-
-import scala.beans.BeanProperty
-import scala.collection.immutable.Stack
-import scala.annotation.tailrec
-
-private[akka] object ActorRefInternals {
-
- /**
- * LifeCycles for ActorRefs.
- */
- private[akka] sealed trait StatusType
- object UNSTARTED extends StatusType
- object RUNNING extends StatusType
- object BEING_RESTARTED extends StatusType
- object SHUTDOWN extends StatusType
-}
-
-/**
- * Abstraction for unification of sender and senderFuture for later reply.
- * Can be stored away and used at a later point in time.
- */
-abstract class Channel[T] {
-
- /**
- * Scala API. <p/>
- * Sends the specified message to the channel.
- */
- def !(msg: T): Unit
-
- /**
- * Java API. <p/>
- * Sends the specified message to the channel.
- */
- def sendOneWay(msg: T): Unit = this.!(msg)
-}
-
-/**
- * ActorRef is an immutable and serializable handle to an Actor.
- * <p/>
- * Create an ActorRef for an Actor by using the factory method on the Actor object.
- * <p/>
- * Here is an example on how to create an actor with a default constructor.
- * <pre>
- * import Actor._
- *
- * val actor = actorOf[MyActor]
- * actor.start()
- * actor ! message
- * actor.stop()
- * </pre>
- *
- * You can also create and start actors like this:
- * <pre>
- * val actor = actorOf[MyActor].start()
- * </pre>
- *
- * Here is an example on how to create an actor with a non-default constructor.
- * <pre>
- * import Actor._
- *
- * val actor = actorOf(new MyActor(...))
- * actor.start()
- * actor ! message
- * actor.stop()
- * </pre>
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-trait ActorRef extends ActorRefShared with java.lang.Comparable[ActorRef] { scalaRef: ScalaActorRef =>
- // Only mutable for RemoteServer in order to maintain identity across nodes
- @volatile
- protected[akka] var _uuid = newUuid
- @volatile
- protected[this] var _status: ActorRefInternals.StatusType = ActorRefInternals.UNSTARTED
-
- /**
- * User overridable callback/setting.
- * <p/>
- * Identifier for actor, does not have to be a unique one. Default is the 'uuid'.
- * <p/>
- * This field is used for logging, AspectRegistry.actorsFor(id), identifier for remote
- * actor in RemoteServer etc.But also as the identifier for persistence, which means
- * that you can use a custom name to be able to retrieve the "correct" persisted state
- * upon restart, remote restart etc.
- */
- @BeanProperty
- @volatile
- var id: String = _uuid.toString
-
- /**
- * User overridable callback/setting.
- * <p/>
- * Defines the default timeout for '!!' and '!!!' invocations,
- * e.g. the timeout for the future returned by the call to '!!' and '!!!'.
- */
- @deprecated("Will be replaced by implicit-scoped timeout on all methods that needs it, will default to timeout specified in config", "1.1")
- @BeanProperty
- @volatile
- var timeout: Long = Actor.TIMEOUT
-
- /**
- * User overridable callback/setting.
- * <p/>
- * Defines the default timeout for an initial receive invocation.
- * When specified, the receive function should be able to handle a 'ReceiveTimeout' message.
- */
- @volatile
- var receiveTimeout: Option[Long] = None
-
- /**
- * Akka Java API. <p/>
- * Defines the default timeout for an initial receive invocation.
- * When specified, the receive function should be able to handle a 'ReceiveTimeout' message.
- */
- def setReceiveTimeout(timeout: Long) = this.receiveTimeout = Some(timeout)
- def getReceiveTimeout(): Option[Long] = receiveTimeout
-
- /**
- * Akka Java API. <p/>
- * A faultHandler defines what should be done when a linked actor signals an error.
- * <p/>
- * Can be one of:
- * <pre>
- * getContext().setFaultHandler(new AllForOneStrategy(new Class[]{Throwable.class},maxNrOfRetries, withinTimeRange));
- * </pre>
- * Or:
- * <pre>
- * getContext().setFaultHandler(new OneForOneStrategy(new Class[]{Throwable.class},maxNrOfRetries, withinTimeRange));
- * </pre>
- */
- def setFaultHandler(handler: FaultHandlingStrategy)
- def getFaultHandler(): FaultHandlingStrategy
-
- /**
- * Akka Java API. <p/>
- * A lifeCycle defines whether the actor will be stopped on error (Temporary) or if it can be restarted (Permanent)
- * <p/>
- * Can be one of:
- *
- * import static akka.config.Supervision.*;
- * <pre>
- * getContext().setLifeCycle(permanent());
- * </pre>
- * Or:
- * <pre>
- * getContext().setLifeCycle(temporary());
- * </pre>
- */
- def setLifeCycle(lifeCycle: LifeCycle): Unit
- def getLifeCycle(): LifeCycle
-
- /**
- * Akka Java API. <p/>
- * The default dispatcher is the <tt>Dispatchers.globalExecutorBasedEventDrivenDispatcher</tt>.
- * This means that all actors will share the same event-driven executor based dispatcher.
- * <p/>
- * You can override it so it fits the specific use-case that the actor is used for.
- * See the <tt>akka.dispatch.Dispatchers</tt> class for the different
- * dispatchers available.
- * <p/>
- * The default is also that all actors that are created and spawned from within this actor
- * is sharing the same dispatcher as its creator.
- */
- def setDispatcher(dispatcher: MessageDispatcher) = this.dispatcher = dispatcher
- def getDispatcher(): MessageDispatcher = dispatcher
-
- /**
- * Returns on which node this actor lives if None it lives in the local ActorRegistry
- */
- @deprecated("Remoting will become fully transparent in the future", "1.1")
- def homeAddress: Option[InetSocketAddress]
-
- /**
- * Java API. <p/>
- */
- @deprecated("Remoting will become fully transparent in the future", "1.1")
- def getHomeAddress(): InetSocketAddress = homeAddress getOrElse null
-
- /**
- * Holds the hot swapped partial function.
- */
- @volatile
- protected[akka] var hotswap = Stack[PartialFunction[Any, Unit]]()
-
- /**
- * This is a reference to the message currently being processed by the actor
- */
- @volatile
- protected[akka] var currentMessage: MessageInvocation = null
-
- /**
- * Comparison only takes uuid into account.
- */
- def compareTo(other: ActorRef) = this.uuid compareTo other.uuid
-
- /**
- * Returns the uuid for the actor.
- */
- def getUuid() = _uuid
- def uuid = _uuid
-
- /**
- * Akka Java API. <p/>
- * The reference sender Actor of the last received message.
- * Is defined if the message was sent from another Actor, else None.
- */
- def getSender(): Option[ActorRef] = sender
-
- /**
- * Akka Java API. <p/>
- * The reference sender future of the last received message.
- * Is defined if the message was sent with sent with '!!' or '!!!', else None.
- */
- def getSenderFuture(): Option[CompletableFuture[Any]] = senderFuture
-
- /**
- * Is the actor being restarted?
- */
- def isBeingRestarted: Boolean = _status == ActorRefInternals.BEING_RESTARTED
-
- /**
- * Is the actor running?
- */
- def isRunning: Boolean = _status match {
- case ActorRefInternals.BEING_RESTARTED | ActorRefInternals.RUNNING => true
- case _ => false
- }
-
- /**
- * Is the actor shut down?
- */
- def isShutdown: Boolean = _status == ActorRefInternals.SHUTDOWN
-
- /**
- * Is the actor ever started?
- */
- def isUnstarted: Boolean = _status == ActorRefInternals.UNSTARTED
-
- /**
- * Is the actor able to handle the message passed in as arguments?
- */
- @deprecated("Will be removed without replacement, it's just not reliable in the face of `become` and `unbecome`", "1.1")
- def isDefinedAt(message: Any): Boolean = actor.isDefinedAt(message)
-
- /**
- * Only for internal use. UUID is effectively final.
- */
- protected[akka] def uuid_=(uid: Uuid) = _uuid = uid
-
- /**
- * Akka Java API. <p/>
- * Sends a one-way asynchronous message. E.g. fire-and-forget semantics.
- * <p/>
- * <pre>
- * actor.sendOneWay(message);
- * </pre>
- * <p/>
- */
- def sendOneWay(message: AnyRef): Unit = sendOneWay(message, null)
-
- /**
- * Akka Java API. <p/>
- * Sends a one-way asynchronous message. E.g. fire-and-forget semantics.
- * <p/>
- * Allows you to pass along the sender of the message.
- * <p/>
- * <pre>
- * actor.sendOneWay(message, context);
- * </pre>
- * <p/>
- */
- def sendOneWay(message: AnyRef, sender: ActorRef): Unit = this.!(message)(Option(sender))
-
- /**
- * Akka Java API. <p/>
- * @see sendRequestReply(message: AnyRef, timeout: Long, sender: ActorRef)
- * Uses the default timeout of the Actor (setTimeout()) and omits the sender reference
- */
- def sendRequestReply(message: AnyRef): AnyRef = sendRequestReply(message, timeout, null)
-
- /**
- * Akka Java API. <p/>
- * @see sendRequestReply(message: AnyRef, timeout: Long, sender: ActorRef)
- * Uses the default timeout of the Actor (setTimeout())
- */
- def sendRequestReply(message: AnyRef, sender: ActorRef): AnyRef = sendRequestReply(message, timeout, sender)
-
- /**
- * Akka Java API. <p/>
- * Sends a message asynchronously and waits on a future for a reply message under the hood.
- * <p/>
- * It waits on the reply either until it receives it or until the timeout expires
- * (which will throw an ActorTimeoutException). E.g. send-and-receive-eventually semantics.
- * <p/>
- * <b>NOTE:</b>
- * Use this method with care. In most cases it is better to use 'sendOneWay' together with 'getContext().getSender()' to
- * implement request/response message exchanges.
- * <p/>
- * If you are sending messages using <code>sendRequestReply</code> then you <b>have to</b> use <code>getContext().reply(..)</code>
- * to send a reply message to the original sender. If not then the sender will block until the timeout expires.
- */
- def sendRequestReply(message: AnyRef, timeout: Long, sender: ActorRef): AnyRef = {
- !!(message, timeout)(Option(sender)).getOrElse(throw new ActorTimeoutException(
- "Message [" + message +
- "]\n\tsent to [" + actorClassName +
- "]\n\tfrom [" + (if (sender ne null) sender.actorClassName else "nowhere") +
- "]\n\twith timeout [" + timeout +
- "]\n\ttimed out."))
- .asInstanceOf[AnyRef]
- }
-
- /**
- * Akka Java API. <p/>
- * @see sendRequestReplyFuture(message: AnyRef, sender: ActorRef): Future[_]
- * Uses the Actors default timeout (setTimeout()) and omits the sender
- */
- def sendRequestReplyFuture[T <: AnyRef](message: AnyRef): Future[T] = sendRequestReplyFuture(message, timeout, null).asInstanceOf[Future[T]]
-
- /**
- * Akka Java API. <p/>
- * @see sendRequestReplyFuture(message: AnyRef, sender: ActorRef): Future[_]
- * Uses the Actors default timeout (setTimeout())
- */
- def sendRequestReplyFuture[T <: AnyRef](message: AnyRef, sender: ActorRef): Future[T] = sendRequestReplyFuture(message, timeout, sender).asInstanceOf[Future[T]]
-
- /**
- * Akka Java API. <p/>
- * Sends a message asynchronously returns a future holding the eventual reply message.
- * <p/>
- * <b>NOTE:</b>
- * Use this method with care. In most cases it is better to use 'sendOneWay' together with the 'getContext().getSender()' to
- * implement request/response message exchanges.
- * <p/>
- * If you are sending messages using <code>sendRequestReplyFuture</code> then you <b>have to</b> use <code>getContext().reply(..)</code>
- * to send a reply message to the original sender. If not then the sender will block until the timeout expires.
- */
- def sendRequestReplyFuture[T <: AnyRef](message: AnyRef, timeout: Long, sender: ActorRef): Future[T] = !!!(message, timeout)(Option(sender)).asInstanceOf[Future[T]]
-
- /**
- * Akka Java API. <p/>
- * Forwards the message specified to this actor and preserves the original sender of the message
- */
- def forward(message: AnyRef, sender: ActorRef): Unit =
- if (sender eq null) throw new IllegalArgumentException("The 'sender' argument to 'forward' can't be null")
- else forward(message)(Some(sender))
-
- /**
- * Akka Java API. <p/>
- * Use <code>getContext().replyUnsafe(..)</code> to reply with a message to the original sender of the message currently
- * being processed.
- * <p/>
- * Throws an IllegalStateException if unable to determine what to reply to.
- */
- def replyUnsafe(message: AnyRef) = reply(message)
-
- /**
- * Akka Java API. <p/>
- * Use <code>getContext().replySafe(..)</code> to reply with a message to the original sender of the message currently
- * being processed.
- * <p/>
- * Returns true if reply was sent, and false if unable to determine what to reply to.
- */
- def replySafe(message: AnyRef): Boolean = reply_?(message)
-
- /**
- * Returns the class for the Actor instance that is managed by the ActorRef.
- */
- @deprecated("Will be removed without replacement, doesn't make any sense to have in the face of `become` and `unbecome`", "1.1")
- def actorClass: Class[_ <: Actor]
-
- /**
- * Akka Java API. <p/>
- * Returns the class for the Actor instance that is managed by the ActorRef.
- */
- @deprecated("Will be removed without replacement, doesn't make any sense to have in the face of `become` and `unbecome`", "1.1")
- def getActorClass(): Class[_ <: Actor] = actorClass
-
- /**
- * Returns the class name for the Actor instance that is managed by the ActorRef.
- */
- @deprecated("Will be removed without replacement, doesn't make any sense to have in the face of `become` and `unbecome`", "1.1")
- def actorClassName: String
-
- /**
- * Akka Java API. <p/>
- * Returns the class name for the Actor instance that is managed by the ActorRef.
- */
- @deprecated("Will be removed without replacement, doesn't make any sense to have in the face of `become` and `unbecome`", "1.1")
- def getActorClassName(): String = actorClassName
-
- /**
- * Sets the dispatcher for this actor. Needs to be invoked before the actor is started.
- */
- def dispatcher_=(md: MessageDispatcher): Unit
-
- /**
- * Get the dispatcher for this actor.
- */
- def dispatcher: MessageDispatcher
-
- /**
- * Starts up the actor and its message queue.
- */
- def start(): ActorRef
-
- /**
- * Shuts down the actor its dispatcher and message queue.
- * Alias for 'stop'.
- */
- def exit() = stop()
-
- /**
- * Shuts down the actor its dispatcher and message queue.
- */
- def stop(): Unit
-
- /**
- * Links an other actor to this actor. Links are unidirectional and means that a the linking actor will
- * receive a notification if the linked actor has crashed.
- * <p/>
- * If the 'trapExit' member field of the 'faultHandler' has been set to at contain at least one exception class then it will
- * 'trap' these exceptions and automatically restart the linked actors according to the restart strategy
- * defined by the 'faultHandler'.
- */
- def link(actorRef: ActorRef): Unit
-
- /**
- * Unlink the actor.
- */
- def unlink(actorRef: ActorRef): Unit
-
- /**
- * Atomically start and link an actor.
- */
- def startLink(actorRef: ActorRef): Unit
-
- /**
- * Atomically create (from actor class) and start an actor.
- * <p/>
- * To be invoked from within the actor itself.
- */
- @deprecated("Will be removed after 1.1, use Actor.actorOf instead", "1.1")
- def spawn(clazz: Class[_ <: Actor]): ActorRef
-
- /**
- * Atomically create (from actor class), make it remote and start an actor.
- * <p/>
- * To be invoked from within the actor itself.
- */
- @deprecated("Will be removed after 1.1, client managed actors will be removed", "1.1")
- def spawnRemote(clazz: Class[_ <: Actor], hostname: String, port: Int, timeout: Long): ActorRef
-
- /**
- * Atomically create (from actor class), link and start an actor.
- * <p/>
- * To be invoked from within the actor itself.
- */
- @deprecated("Will be removed after 1.1, use Actor.remote.actorOf instead and then link on success", "1.1")
- def spawnLink(clazz: Class[_ <: Actor]): ActorRef
-
- /**
- * Atomically create (from actor class), make it remote, link and start an actor.
- * <p/>
- * To be invoked from within the actor itself.
- */
- @deprecated("Will be removed after 1.1, client managed actors will be removed", "1.1")
- def spawnLinkRemote(clazz: Class[_ <: Actor], hostname: String, port: Int, timeout: Long): ActorRef
-
- /**
- * Returns the mailbox size.
- */
- def mailboxSize = dispatcher.mailboxSize(this)
-
- /**
- * Akka Java API. <p/>
- * Returns the mailbox size.
- */
- def getMailboxSize(): Int = mailboxSize
-
- /**
- * Returns the supervisor, if there is one.
- */
- def supervisor: Option[ActorRef]
-
- /**
- * Akka Java API. <p/>
- * Returns the supervisor, if there is one.
- */
- def getSupervisor(): ActorRef = supervisor getOrElse null
-
- /**
- * Returns an unmodifiable Java Map containing the linked actors,
- * please note that the backing map is thread-safe but not immutable
- */
- def linkedActors: JMap[Uuid, ActorRef]
-
- /**
- * Java API. <p/>
- * Returns an unmodifiable Java Map containing the linked actors,
- * please note that the backing map is thread-safe but not immutable
- */
- def getLinkedActors(): JMap[Uuid, ActorRef] = linkedActors
-
- /**
- * Abstraction for unification of sender and senderFuture for later reply
- */
- def channel: Channel[Any] = {
- if (senderFuture.isDefined) {
- new Channel[Any] {
- val future = senderFuture.get
- def !(msg: Any) = future completeWithResult msg
- }
- } else if (sender.isDefined) {
- val someSelf = Some(this)
- new Channel[Any] {
- val client = sender.get
- def !(msg: Any) = client.!(msg)(someSelf)
- }
- } else throw new IllegalActorStateException("No channel available")
- }
-
- /**
- * Java API. <p/>
- * Abstraction for unification of sender and senderFuture for later reply
- */
- def getChannel: Channel[Any] = channel
-
- protected[akka] def invoke(messageHandle: MessageInvocation): Unit
-
- protected[akka] def postMessageToMailbox(message: Any, senderOption: Option[ActorRef]): Unit
-
- protected[akka] def postMessageToMailboxAndCreateFutureResultWithTimeout[T](
- message: Any,
- timeout: Long,
- senderOption: Option[ActorRef],
- senderFuture: Option[CompletableFuture[T]]): CompletableFuture[T]
-
- protected[akka] def actorInstance: AtomicReference[Actor]
-
- protected[akka] def actor: Actor = actorInstance.get
-
- protected[akka] def supervisor_=(sup: Option[ActorRef]): Unit
-
- protected[akka] def mailbox: AnyRef
- protected[akka] def mailbox_=(value: AnyRef): AnyRef
-
- protected[akka] def handleTrapExit(dead: ActorRef, reason: Throwable): Unit
-
- protected[akka] def restart(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int]): Unit
-
- protected[akka] def restartLinkedActors(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int]): Unit
-
- protected[akka] def registerSupervisorAsRemoteActor: Option[Uuid]
-
- override def hashCode: Int = HashCode.hash(HashCode.SEED, uuid)
-
- override def equals(that: Any): Boolean = {
- that.isInstanceOf[ActorRef] &&
- that.asInstanceOf[ActorRef].uuid == uuid
- }
-
- override def toString = "Actor[" + id + ":" + uuid + "]"
-}
-
-/**
- * Local (serializable) ActorRef that is used when referencing the Actor on its "home" node.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-class LocalActorRef private[akka] (
- private[this] val actorFactory: () => Actor,
- val homeAddress: Option[InetSocketAddress],
- val clientManaged: Boolean = false)
- extends ActorRef with ScalaActorRef {
- protected[akka] val guard = new ReentrantGuard
-
- @volatile
- protected[akka] var _futureTimeout: Option[ScheduledFuture[AnyRef]] = None
- @volatile
- private[akka] lazy val _linkedActors = new ConcurrentHashMap[Uuid, ActorRef]
- @volatile
- private[akka] var _supervisor: Option[ActorRef] = None
- @volatile
- private var maxNrOfRetriesCount: Int = 0
- @volatile
- private var restartsWithinTimeRangeTimestamp: Long = 0L
- @volatile
- private var _mailbox: AnyRef = _
- @volatile
- private[akka] var _dispatcher: MessageDispatcher = Dispatchers.defaultGlobalDispatcher
-
- protected[akka] val actorInstance = guard.withGuard { new AtomicReference[Actor](newActor) }
-
- //If it was started inside "newActor", initialize it
- if (isRunning) initializeActorInstance
-
- // used only for deserialization
- private[akka] def this(
- __uuid: Uuid,
- __id: String,
- __timeout: Long,
- __receiveTimeout: Option[Long],
- __lifeCycle: LifeCycle,
- __supervisor: Option[ActorRef],
- __hotswap: Stack[PartialFunction[Any, Unit]],
- __factory: () => Actor,
- __homeAddress: Option[InetSocketAddress]) = {
- this(__factory, __homeAddress)
- _uuid = __uuid
- id = __id
- timeout = __timeout
- receiveTimeout = __receiveTimeout
- lifeCycle = __lifeCycle
- _supervisor = __supervisor
- hotswap = __hotswap
- setActorSelfFields(actor, this)
- start
- }
-
- /**
- * Returns whether this actor ref is client-managed remote or not
- */
- private[akka] final def isClientManaged_? = clientManaged && homeAddress.isDefined && isRemotingEnabled
-
- // ========= PUBLIC FUNCTIONS =========
-
- /**
- * Returns the class for the Actor instance that is managed by the ActorRef.
- */
- @deprecated("Will be removed without replacement, doesn't make any sense to have in the face of `become` and `unbecome`", "1.1")
- def actorClass: Class[_ <: Actor] = actor.getClass.asInstanceOf[Class[_ <: Actor]]
-
- /**
- * Returns the class name for the Actor instance that is managed by the ActorRef.
- */
- @deprecated("Will be removed without replacement, doesn't make any sense to have in the face of `become` and `unbecome`", "1.1")
- def actorClassName: String = actorClass.getName
-
- /**
- * Sets the dispatcher for this actor. Needs to be invoked before the actor is started.
- */
- def dispatcher_=(md: MessageDispatcher): Unit = guard.withGuard {
- if (!isBeingRestarted) {
- if (!isRunning) _dispatcher = md
- else throw new ActorInitializationException(
- "Can not swap dispatcher for " + toString + " after it has been started")
- }
- }
-
- /**
- * Get the dispatcher for this actor.
- */
- def dispatcher: MessageDispatcher = _dispatcher
-
- /**
- * Starts up the actor and its message queue.
- */
- def start(): ActorRef = guard.withGuard {
- if (isShutdown) throw new ActorStartException(
- "Can't restart an actor that has been shut down with 'stop' or 'exit'")
- if (!isRunning) {
- dispatcher.attach(this)
-
- _status = ActorRefInternals.RUNNING
-
- // If we are not currently creating this ActorRef instance
- if ((actorInstance ne null) && (actorInstance.get ne null))
- initializeActorInstance
-
- if (isClientManaged_?)
- Actor.remote.registerClientManagedActor(homeAddress.get.getAddress.getHostAddress, homeAddress.get.getPort, uuid)
-
- checkReceiveTimeout //Schedule the initial Receive timeout
- }
- this
- }
-
- /**
- * Shuts down the actor its dispatcher and message queue.
- */
- def stop() = guard.withGuard {
- if (isRunning) {
- receiveTimeout = None
- cancelReceiveTimeout
- dispatcher.detach(this)
- _status = ActorRefInternals.SHUTDOWN
- try {
- actor.postStop
- } finally {
- currentMessage = null
- Actor.registry.unregister(this)
- if (isRemotingEnabled) {
- if (isClientManaged_?)
- Actor.remote.unregisterClientManagedActor(homeAddress.get.getAddress.getHostAddress, homeAddress.get.getPort, uuid)
- Actor.remote.unregister(this)
- }
- setActorSelfFields(actorInstance.get, null)
- }
- } //else if (isBeingRestarted) throw new ActorKilledException("Actor [" + toString + "] is being restarted.")
- }
-
- /**
- * Links an other actor to this actor. Links are unidirectional and means that a the linking actor will
- * receive a notification if the linked actor has crashed.
- * <p/>
- * If the 'trapExit' member field of the 'faultHandler' has been set to at contain at least one exception class then it will
- * 'trap' these exceptions and automatically restart the linked actors according to the restart strategy
- * defined by the 'faultHandler'.
- * <p/>
- * To be invoked from within the actor itself.
- */
- def link(actorRef: ActorRef): Unit = guard.withGuard {
- val actorRefSupervisor = actorRef.supervisor
- val hasSupervisorAlready = actorRefSupervisor.isDefined
- if (hasSupervisorAlready && actorRefSupervisor.get.uuid == uuid) return // we already supervise this guy
- else if (hasSupervisorAlready) throw new IllegalActorStateException(
- "Actor can only have one supervisor [" + actorRef + "], e.g. link(actor) fails")
- else {
- _linkedActors.put(actorRef.uuid, actorRef)
- actorRef.supervisor = Some(this)
- }
- }
-
- /**
- * Unlink the actor.
- * <p/>
- * To be invoked from within the actor itself.
- */
- def unlink(actorRef: ActorRef) = guard.withGuard {
- if (_linkedActors.remove(actorRef.uuid) eq null)
- throw new IllegalActorStateException("Actor [" + actorRef + "] is not a linked actor, can't unlink")
-
- actorRef.supervisor = None
- }
-
- /**
- * Atomically start and link an actor.
- * <p/>
- * To be invoked from within the actor itself.
- */
- def startLink(actorRef: ActorRef): Unit = guard.withGuard {
- link(actorRef)
- actorRef.start()
- }
-
- /**
- * Atomically create (from actor class) and start an actor.
- * <p/>
- * To be invoked from within the actor itself.
- */
- def spawn(clazz: Class[_ <: Actor]): ActorRef =
- Actor.actorOf(clazz).start()
-
- /**
- * Atomically create (from actor class), start and make an actor remote.
- * <p/>
- * To be invoked from within the actor itself.
- */
- def spawnRemote(clazz: Class[_ <: Actor], hostname: String, port: Int, timeout: Long = Actor.TIMEOUT): ActorRef = {
- ensureRemotingEnabled
- val ref = Actor.remote.actorOf(clazz, hostname, port)
- ref.timeout = timeout
- ref.start()
- }
-
- /**
- * Atomically create (from actor class), start and link an actor.
- * <p/>
- * To be invoked from within the actor itself.
- */
- def spawnLink(clazz: Class[_ <: Actor]): ActorRef = {
- val actor = spawn(clazz)
- link(actor)
- actor.start()
- actor
- }
-
- /**
- * Atomically create (from actor class), start, link and make an actor remote.
- * <p/>
- * To be invoked from within the actor itself.
- */
- def spawnLinkRemote(clazz: Class[_ <: Actor], hostname: String, port: Int, timeout: Long = Actor.TIMEOUT): ActorRef = {
- ensureRemotingEnabled
- val actor = Actor.remote.actorOf(clazz, hostname, port)
- actor.timeout = timeout
- link(actor)
- actor.start()
- actor
- }
-
- /**
- * Returns the mailbox.
- */
- def mailbox: AnyRef = _mailbox
-
- protected[akka] def mailbox_=(value: AnyRef): AnyRef = { _mailbox = value; value }
-
- /**
- * Returns the supervisor, if there is one.
- */
- def supervisor: Option[ActorRef] = _supervisor
-
- // ========= AKKA PROTECTED FUNCTIONS =========
-
- protected[akka] def supervisor_=(sup: Option[ActorRef]): Unit = _supervisor = sup
-
- protected[akka] def postMessageToMailbox(message: Any, senderOption: Option[ActorRef]): Unit =
- if (isClientManaged_?) {
- Actor.remote.send[Any](
- message, senderOption, None, homeAddress.get, timeout, true, this, None, ActorType.ScalaActor, None)
- } else
- dispatcher dispatchMessage new MessageInvocation(this, message, senderOption, None)
-
- protected[akka] def postMessageToMailboxAndCreateFutureResultWithTimeout[T](
- message: Any,
- timeout: Long,
- senderOption: Option[ActorRef],
- senderFuture: Option[CompletableFuture[T]]): CompletableFuture[T] = {
- if (isClientManaged_?) {
- val future = Actor.remote.send[T](
- message, senderOption, senderFuture, homeAddress.get, timeout, false, this, None, ActorType.ScalaActor, None)
- if (future.isDefined) future.get
- else throw new IllegalActorStateException("Expected a future from remote call to actor " + toString)
- } else {
- val future = if (senderFuture.isDefined) senderFuture else Some(new DefaultCompletableFuture[T](timeout))
- dispatcher dispatchMessage new MessageInvocation(
- this, message, senderOption, future.asInstanceOf[Some[CompletableFuture[Any]]])
- future.get
- }
- }
-
- /**
- * Callback for the dispatcher. This is the single entry point to the user Actor implementation.
- */
- protected[akka] def invoke(messageHandle: MessageInvocation): Unit = {
- guard.lock.lock
- try {
- if (!isShutdown) {
- currentMessage = messageHandle
- try {
- try {
- cancelReceiveTimeout // FIXME: leave this here?
- actor(messageHandle.message)
- currentMessage = null // reset current message after successful invocation
- } catch {
- case e: InterruptedException =>
- currentMessage = null // received message while actor is shutting down, ignore
- case e =>
- handleExceptionInDispatch(e, messageHandle.message)
- }
- finally {
- checkReceiveTimeout // Reschedule receive timeout
- }
- } catch {
- case e =>
- EventHandler.error(e, this, messageHandle.message.toString)
- throw e
- }
- }
- } finally { guard.lock.unlock }
- }
-
- protected[akka] def handleTrapExit(dead: ActorRef, reason: Throwable) {
- faultHandler match {
- case AllForOneStrategy(trapExit, maxRetries, within) if trapExit.exists(_.isAssignableFrom(reason.getClass)) =>
- restartLinkedActors(reason, maxRetries, within)
-
- case OneForOneStrategy(trapExit, maxRetries, within) if trapExit.exists(_.isAssignableFrom(reason.getClass)) =>
- dead.restart(reason, maxRetries, within)
-
- case _ =>
- if (_supervisor.isDefined) notifySupervisorWithMessage(Exit(this, reason))
- else dead.stop()
- }
- }
-
- private def requestRestartPermission(maxNrOfRetries: Option[Int], withinTimeRange: Option[Int]): Boolean = {
- val denied = if (maxNrOfRetries.isEmpty && withinTimeRange.isEmpty) { //Immortal
- false
- } else if (withinTimeRange.isEmpty) { // restrict number of restarts
- maxNrOfRetriesCount += 1 //Increment number of retries
- maxNrOfRetriesCount > maxNrOfRetries.get
- } else { // cannot restart more than N within M timerange
- maxNrOfRetriesCount += 1 //Increment number of retries
- val windowStart = restartsWithinTimeRangeTimestamp
- val now = System.currentTimeMillis
- val retries = maxNrOfRetriesCount
- //We are within the time window if it isn't the first restart, or if the window hasn't closed
- val insideWindow = if (windowStart == 0) false
- else (now - windowStart) <= withinTimeRange.get
-
- //The actor is dead if it dies X times within the window of restart
- val unrestartable = insideWindow && retries > maxNrOfRetries.getOrElse(1)
-
- if (windowStart == 0 || !insideWindow) //(Re-)set the start of the window
- restartsWithinTimeRangeTimestamp = now
-
- if (windowStart != 0 && !insideWindow) //Reset number of restarts if window has expired
- maxNrOfRetriesCount = 1
-
- unrestartable
- }
-
- denied == false //If we weren't denied, we have a go
- }
-
- protected[akka] def restart(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int]) {
- def performRestart() {
- val failedActor = actorInstance.get
-
- failedActor match {
- case p: Proxyable =>
- failedActor.preRestart(reason)
- failedActor.postRestart(reason)
- case _ =>
- failedActor.preRestart(reason)
- val freshActor = newActor
- setActorSelfFields(failedActor, null) // Only null out the references if we could instantiate the new actor
- actorInstance.set(freshActor) // Assign it here so if preStart fails, we can null out the sef-refs next call
- freshActor.preStart
- freshActor.postRestart(reason)
- }
- }
-
- def tooManyRestarts() {
- _supervisor.foreach { sup =>
- // can supervisor handle the notification?
- val notification = MaximumNumberOfRestartsWithinTimeRangeReached(this, maxNrOfRetries, withinTimeRange, reason)
- if (sup.isDefinedAt(notification)) notifySupervisorWithMessage(notification)
- }
- stop
- }
-
- @tailrec
- def attemptRestart() {
- val success = if (requestRestartPermission(maxNrOfRetries, withinTimeRange)) {
- guard.withGuard[Boolean] {
- _status = ActorRefInternals.BEING_RESTARTED
-
- lifeCycle match {
- case Temporary =>
- shutDownTemporaryActor(this)
- true
-
- case _ => // either permanent or none where default is permanent
- val success = try {
- performRestart()
- true
- } catch {
- case e =>
- EventHandler.error(e, this, "Exception in restart of Actor [%s]".format(toString))
- false // an error or exception here should trigger a retry
- }
- finally {
- currentMessage = null
- }
- if (success) {
- _status = ActorRefInternals.RUNNING
- dispatcher.resume(this)
- restartLinkedActors(reason, maxNrOfRetries, withinTimeRange)
- }
- success
- }
- }
- } else {
- tooManyRestarts()
- true // done
- }
-
- if (success) () // alles gut
- else attemptRestart()
- }
-
- attemptRestart() // recur
- }
-
- protected[akka] def restartLinkedActors(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int]) = {
- val i = _linkedActors.values.iterator
- while (i.hasNext) {
- val actorRef = i.next
- actorRef.lifeCycle match {
- // either permanent or none where default is permanent
- case Temporary => shutDownTemporaryActor(actorRef)
- case _ => actorRef.restart(reason, maxNrOfRetries, withinTimeRange)
- }
- }
- }
-
- protected[akka] def registerSupervisorAsRemoteActor: Option[Uuid] = guard.withGuard {
- ensureRemotingEnabled
- if (_supervisor.isDefined) {
- if (homeAddress.isDefined) Actor.remote.registerSupervisorForActor(this)
- Some(_supervisor.get.uuid)
- } else None
- }
-
- def linkedActors: JMap[Uuid, ActorRef] = java.util.Collections.unmodifiableMap(_linkedActors)
-
- // ========= PRIVATE FUNCTIONS =========
-
- private[this] def newActor: Actor = {
- try {
- Actor.actorRefInCreation.set(Some(this))
- val a = actorFactory()
- if (a eq null) throw new ActorInitializationException("Actor instance passed to ActorRef can not be 'null'")
- a
- } finally {
- Actor.actorRefInCreation.set(None)
- }
- }
-
- private def shutDownTemporaryActor(temporaryActor: ActorRef) {
- temporaryActor.stop()
- _linkedActors.remove(temporaryActor.uuid) // remove the temporary actor
- // if last temporary actor is gone, then unlink me from supervisor
- if (_linkedActors.isEmpty) notifySupervisorWithMessage(UnlinkAndStop(this))
- true
- }
-
- private def handleExceptionInDispatch(reason: Throwable, message: Any) = {
- EventHandler.error(reason, this, message.toString)
-
- //Prevent any further messages to be processed until the actor has been restarted
- dispatcher.suspend(this)
-
- senderFuture.foreach(_.completeWithException(reason))
-
- if (supervisor.isDefined) notifySupervisorWithMessage(Exit(this, reason))
- else {
- lifeCycle match {
- case Temporary => shutDownTemporaryActor(this)
- case _ => dispatcher.resume(this) //Resume processing for this actor
- }
- }
- }
-
- private def notifySupervisorWithMessage(notification: LifeCycleMessage) = {
- // FIXME to fix supervisor restart of remote actor for oneway calls, inject a supervisor proxy that can send notification back to client
- _supervisor.foreach { sup =>
- if (sup.isShutdown) { // if supervisor is shut down, game over for all linked actors
- //Scoped stop all linked actors, to avoid leaking the 'i' val
- {
- val i = _linkedActors.values.iterator
- while (i.hasNext) {
- i.next.stop()
- i.remove
- }
- }
- //Stop the actor itself
- stop
- } else sup ! notification // else notify supervisor
- }
- }
-
- private def setActorSelfFields(actor: Actor, value: ActorRef) {
-
- @tailrec
- def lookupAndSetSelfFields(clazz: Class[_], actor: Actor, value: ActorRef): Boolean = {
- val success = try {
- val selfField = clazz.getDeclaredField("self")
- val someSelfField = clazz.getDeclaredField("someSelf")
- selfField.setAccessible(true)
- someSelfField.setAccessible(true)
- selfField.set(actor, value)
- someSelfField.set(actor, if (value ne null) Some(value) else null)
- true
- } catch {
- case e: NoSuchFieldException => false
- }
-
- if (success) true
- else {
- val parent = clazz.getSuperclass
- if (parent eq null)
- throw new IllegalActorStateException(toString + " is not an Actor since it have not mixed in the 'Actor' trait")
- lookupAndSetSelfFields(parent, actor, value)
- }
- }
-
- lookupAndSetSelfFields(actor.getClass, actor, value)
- }
-
- private def initializeActorInstance = {
- actor.preStart // run actor preStart
- Actor.registry.register(this)
- }
-
- protected[akka] def checkReceiveTimeout = {
- cancelReceiveTimeout
- if (receiveTimeout.isDefined && dispatcher.mailboxSize(this) <= 0) { //Only reschedule if desired and there are currently no more messages to be processed
- _futureTimeout = Some(Scheduler.scheduleOnce(this, ReceiveTimeout, receiveTimeout.get, TimeUnit.MILLISECONDS))
- }
- }
-
- protected[akka] def cancelReceiveTimeout = {
- if (_futureTimeout.isDefined) {
- _futureTimeout.get.cancel(true)
- _futureTimeout = None
- }
- }
-}
-
-/**
- * System messages for RemoteActorRef.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-object RemoteActorSystemMessage {
- val Stop = "RemoteActorRef:stop".intern
-}
-
-/**
- * Remote ActorRef that is used when referencing the Actor on a different node than its "home" node.
- * This reference is network-aware (remembers its origin) and immutable.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-private[akka] case class RemoteActorRef private[akka] (
- classOrServiceName: String,
- val actorClassName: String,
- val hostname: String,
- val port: Int,
- _timeout: Long,
- loader: Option[ClassLoader],
- val actorType: ActorType = ActorType.ScalaActor)
- extends ActorRef with ScalaActorRef {
-
- ensureRemotingEnabled
-
- val homeAddress = Some(new InetSocketAddress(hostname, port))
-
- //protected def clientManaged = classOrServiceName.isEmpty //If no class or service name, it's client managed
- id = classOrServiceName
- //id = classOrServiceName.getOrElse("uuid:" + uuid) //If we're a server-managed we want to have classOrServiceName as id, or else, we're a client-managed and we want to have our uuid as id
-
- timeout = _timeout
-
- start
-
- def postMessageToMailbox(message: Any, senderOption: Option[ActorRef]): Unit =
- Actor.remote.send[Any](message, senderOption, None, homeAddress.get, timeout, true, this, None, actorType, loader)
-
- def postMessageToMailboxAndCreateFutureResultWithTimeout[T](
- message: Any,
- timeout: Long,
- senderOption: Option[ActorRef],
- senderFuture: Option[CompletableFuture[T]]): CompletableFuture[T] = {
- val future = Actor.remote.send[T](
- message, senderOption, senderFuture,
- homeAddress.get, timeout,
- false, this, None,
- actorType, loader)
- if (future.isDefined) future.get
- else throw new IllegalActorStateException("Expected a future from remote call to actor " + toString)
- }
-
- def start: ActorRef = synchronized {
- _status = ActorRefInternals.RUNNING
- this
- }
-
- def stop: Unit = synchronized {
- if (_status == ActorRefInternals.RUNNING) {
- _status = ActorRefInternals.SHUTDOWN
- postMessageToMailbox(RemoteActorSystemMessage.Stop, None)
- }
- }
-
- protected[akka] def registerSupervisorAsRemoteActor: Option[Uuid] = None
-
- // ==== NOT SUPPORTED ====
- @deprecated("Will be removed without replacement, doesn't make any sense to have in the face of `become` and `unbecome`", "1.1")
- def actorClass: Class[_ <: Actor] = unsupported
- def dispatcher_=(md: MessageDispatcher): Unit = unsupported
- def dispatcher: MessageDispatcher = unsupported
- def link(actorRef: ActorRef): Unit = unsupported
- def unlink(actorRef: ActorRef): Unit = unsupported
- def startLink(actorRef: ActorRef): Unit = unsupported
- def spawn(clazz: Class[_ <: Actor]): ActorRef = unsupported
- def spawnRemote(clazz: Class[_ <: Actor], hostname: String, port: Int, timeout: Long): ActorRef = unsupported
- def spawnLink(clazz: Class[_ <: Actor]): ActorRef = unsupported
- def spawnLinkRemote(clazz: Class[_ <: Actor], hostname: String, port: Int, timeout: Long): ActorRef = unsupported
- def supervisor: Option[ActorRef] = unsupported
- def linkedActors: JMap[Uuid, ActorRef] = unsupported
- protected[akka] def mailbox: AnyRef = unsupported
- protected[akka] def mailbox_=(value: AnyRef): AnyRef = unsupported
- protected[akka] def handleTrapExit(dead: ActorRef, reason: Throwable): Unit = unsupported
- protected[akka] def restart(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int]): Unit = unsupported
- protected[akka] def restartLinkedActors(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int]): Unit = unsupported
- protected[akka] def invoke(messageHandle: MessageInvocation): Unit = unsupported
- protected[akka] def supervisor_=(sup: Option[ActorRef]): Unit = unsupported
- protected[akka] def actorInstance: AtomicReference[Actor] = unsupported
- private def unsupported = throw new UnsupportedOperationException("Not supported for RemoteActorRef")
-}
-
-/**
- * This trait represents the common (external) methods for all ActorRefs
- * Needed because implicit conversions aren't applied when instance imports are used
- *
- * i.e.
- * var self: ScalaActorRef = ...
- * import self._
- * //can't call ActorRef methods here unless they are declared in a common
- * //superclass, which ActorRefShared is.
- */
-trait ActorRefShared {
- /**
- * Returns the uuid for the actor.
- */
- def uuid: Uuid
-}
-
-/**
- * This trait represents the Scala Actor API
- * There are implicit conversions in ../actor/Implicits.scala
- * from ActorRef -> ScalaActorRef and back
- */
-trait ScalaActorRef extends ActorRefShared { ref: ActorRef =>
-
- /**
- * Identifier for actor, does not have to be a unique one. Default is the 'uuid'.
- * <p/>
- * This field is used for logging, AspectRegistry.actorsFor(id), identifier for remote
- * actor in RemoteServer etc.But also as the identifier for persistence, which means
- * that you can use a custom name to be able to retrieve the "correct" persisted state
- * upon restart, remote restart etc.
- */
- def id: String
-
- def id_=(id: String): Unit
-
- /**
- * User overridable callback/setting.
- * <p/>
- * Defines the life-cycle for a supervised actor.
- */
- @volatile
- @BeanProperty
- var lifeCycle: LifeCycle = UndefinedLifeCycle
-
- /**
- * User overridable callback/setting.
- * <p/>
- * Don't forget to supply a List of exception types to intercept (trapExit)
- * <p/>
- * Can be one of:
- * <pre>
- * faultHandler = AllForOneStrategy(trapExit = List(classOf[Exception]), maxNrOfRetries, withinTimeRange)
- * </pre>
- * Or:
- * <pre>
- * faultHandler = OneForOneStrategy(trapExit = List(classOf[Exception]), maxNrOfRetries, withinTimeRange)
- * </pre>
- */
- @volatile
- @BeanProperty
- var faultHandler: FaultHandlingStrategy = NoFaultHandlingStrategy
-
- /**
- * The reference sender Actor of the last received message.
- * Is defined if the message was sent from another Actor, else None.
- */
- def sender: Option[ActorRef] = {
- val msg = currentMessage
- if (msg eq null) None
- else msg.sender
- }
-
- /**
- * The reference sender future of the last received message.
- * Is defined if the message was sent with sent with '!!' or '!!!', else None.
- */
- def senderFuture(): Option[CompletableFuture[Any]] = {
- val msg = currentMessage
- if (msg eq null) None
- else msg.senderFuture
- }
-
- /**
- * Sends a one-way asynchronous message. E.g. fire-and-forget semantics.
- * <p/>
- *
- * If invoked from within an actor then the actor reference is implicitly passed on as the implicit 'sender' argument.
- * <p/>
- *
- * This actor 'sender' reference is then available in the receiving actor in the 'sender' member variable,
- * if invoked from within an Actor. If not then no sender is available.
- * <pre>
- * actor ! message
- * </pre>
- * <p/>
- */
- def !(message: Any)(implicit sender: Option[ActorRef] = None): Unit = {
- if (isRunning) postMessageToMailbox(message, sender)
- else throw new ActorInitializationException(
- "Actor has not been started, you need to invoke 'actor.start()' before using it")
- }
-
- /**
- * Sends a message asynchronously and waits on a future for a reply message.
- * <p/>
- * It waits on the reply either until it receives it (in the form of <code>Some(replyMessage)</code>)
- * or until the timeout expires (which will return None). E.g. send-and-receive-eventually semantics.
- * <p/>
- * <b>NOTE:</b>
- * Use this method with care. In most cases it is better to use '!' together with the 'sender' member field to
- * implement request/response message exchanges.
- * If you are sending messages using <code>!!</code> then you <b>have to</b> use <code>self.reply(..)</code>
- * to send a reply message to the original sender. If not then the sender will block until the timeout expires.
- */
- def !!(message: Any, timeout: Long = this.timeout)(implicit sender: Option[ActorRef] = None): Option[Any] = {
- if (isRunning) {
- val future = postMessageToMailboxAndCreateFutureResultWithTimeout[Any](message, timeout, sender, None)
- val isMessageJoinPoint = if (isTypedActorEnabled) TypedActorModule.resolveFutureIfMessageIsJoinPoint(message, future)
- else false
- try {
- future.await
- } catch {
- case e: FutureTimeoutException =>
- if (isMessageJoinPoint) {
- EventHandler.error(e, this, e.getMessage)
- throw e
- } else None
- }
- future.resultOrException
- } else throw new ActorInitializationException(
- "Actor has not been started, you need to invoke 'actor.start()' before using it")
- }
-
- /**
- * Sends a message asynchronously returns a future holding the eventual reply message.
- * <p/>
- * <b>NOTE:</b>
- * Use this method with care. In most cases it is better to use '!' together with the 'sender' member field to
- * implement request/response message exchanges.
- * If you are sending messages using <code>!!!</code> then you <b>have to</b> use <code>self.reply(..)</code>
- * to send a reply message to the original sender. If not then the sender will block until the timeout expires.
- */
- def !!![T](message: Any, timeout: Long = this.timeout)(implicit sender: Option[ActorRef] = None): Future[T] = {
- if (isRunning) postMessageToMailboxAndCreateFutureResultWithTimeout[T](message, timeout, sender, None)
- else throw new ActorInitializationException(
- "Actor has not been started, you need to invoke 'actor.start()' before using it")
- }
-
- /**
- * Forwards the message and passes the original sender actor as the sender.
- * <p/>
- * Works with '!', '!!' and '!!!'.
- */
- def forward(message: Any)(implicit sender: Some[ActorRef]) = {
- if (isRunning) {
- if (sender.get.senderFuture.isDefined)
- postMessageToMailboxAndCreateFutureResultWithTimeout(message, timeout, sender.get.sender, sender.get.senderFuture)
- else
- postMessageToMailbox(message, sender.get.sender)
- } else throw new ActorInitializationException("Actor has not been started, you need to invoke 'actor.start()' before using it")
- }
-
- /**
- * Use <code>self.reply(..)</code> to reply with a message to the original sender of the message currently
- * being processed.
- * <p/>
- * Throws an IllegalStateException if unable to determine what to reply to.
- */
- def reply(message: Any) = if (!reply_?(message)) throw new IllegalActorStateException(
- "\n\tNo sender in scope, can't reply. " +
- "\n\tYou have probably: " +
- "\n\t\t1. Sent a message to an Actor from an instance that is NOT an Actor." +
- "\n\t\t2. Invoked a method on an TypedActor from an instance NOT an TypedActor." +
- "\n\tElse you might want to use 'reply_?' which returns Boolean(true) if success and Boolean(false) if no sender in scope")
-
- /**
- * Use <code>reply_?(..)</code> to reply with a message to the original sender of the message currently
- * being processed.
- * <p/>
- * Returns true if reply was sent, and false if unable to determine what to reply to.
- */
- def reply_?(message: Any): Boolean = {
- if (senderFuture.isDefined) {
- senderFuture.get completeWithResult message
- true
- } else if (sender.isDefined) {
- //TODO: optimize away this allocation, perhaps by having implicit self: Option[ActorRef] in signature
- sender.get.!(message)(Some(this))
- true
- } else false
- }
-
- /**
- * Atomically create (from actor class) and start an actor.
- */
- def spawn[T <: Actor: ClassTag]: ActorRef =
- spawn(classTag[T].erasure.asInstanceOf[Class[_ <: Actor]])
-
- /**
- * Atomically create (from actor class), start and make an actor remote.
- */
- def spawnRemote[T <: Actor: ClassTag](hostname: String, port: Int, timeout: Long): ActorRef = {
- ensureRemotingEnabled
- spawnRemote(classTag[T].erasure.asInstanceOf[Class[_ <: Actor]], hostname, port, timeout)
- }
-
- /**
- * Atomically create (from actor class), start and link an actor.
- */
- def spawnLink[T <: Actor: ClassTag]: ActorRef =
- spawnLink(classTag[T].erasure.asInstanceOf[Class[_ <: Actor]])
-
- /**
- * Atomically create (from actor class), start, link and make an actor remote.
- */
- def spawnLinkRemote[T <: Actor: ClassTag](hostname: String, port: Int, timeout: Long): ActorRef = {
- ensureRemotingEnabled
- spawnLinkRemote(classTag[T].erasure.asInstanceOf[Class[_ <: Actor]], hostname, port, timeout)
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/actor/ActorRegistry.scala b/test/disabled/presentation/akka/src/akka/actor/ActorRegistry.scala
deleted file mode 100644
index 224775129b..0000000000
--- a/test/disabled/presentation/akka/src/akka/actor/ActorRegistry.scala
+++ /dev/null
@@ -1,389 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.actor
-
-import scala.collection.mutable.{ ListBuffer, Map }
-import scala.reflect.ArrayTag
-
-import java.util.concurrent.{ ConcurrentSkipListSet, ConcurrentHashMap }
-import java.util.{ Set => JSet }
-
-import annotation.tailrec
-import akka.util.ReflectiveAccess._
-import akka.util.{ ReflectiveAccess, ReadWriteGuard, ListenerManagement }
-
-/**
- * Base trait for ActorRegistry events, allows listen to when an actor is added and removed from the ActorRegistry.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-sealed trait ActorRegistryEvent
-case class ActorRegistered(actor: ActorRef) extends ActorRegistryEvent
-case class ActorUnregistered(actor: ActorRef) extends ActorRegistryEvent
-
-/**
- * Registry holding all Actor instances in the whole system.
- * Mapped by:
- * <ul>
- * <li>the Actor's UUID</li>
- * <li>the Actor's id field (which can be set by user-code)</li>
- * <li>the Actor's class</li>
- * <li>all Actors that are subtypes of a specific type</li>
- * <ul>
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-
-final class ActorRegistry private[actor] () extends ListenerManagement {
-
- private val actorsByUUID = new ConcurrentHashMap[Uuid, ActorRef]
- private val actorsById = new Index[String, ActorRef]
- private val guard = new ReadWriteGuard
-
- /**
- * Returns all actors in the system.
- */
- def actors: Array[ActorRef] = filter(_ => true)
-
- /**
- * Returns the number of actors in the system.
- */
- def size: Int = actorsByUUID.size
-
- /**
- * Invokes a function for all actors.
- */
- def foreach(f: (ActorRef) => Unit) = {
- val elements = actorsByUUID.elements
- while (elements.hasMoreElements) f(elements.nextElement)
- }
-
- /**
- * Invokes the function on all known actors until it returns Some
- * Returns None if the function never returns Some
- */
- def find[T](f: PartialFunction[ActorRef, T]): Option[T] = {
- val elements = actorsByUUID.elements
- while (elements.hasMoreElements) {
- val element = elements.nextElement
- if (f isDefinedAt element) return Some(f(element))
- }
- None
- }
-
- /**
- * Finds all actors that are subtypes of the class passed in as the ClassTag argument and supporting passed message.
- */
- def actorsFor[T <: Actor](message: Any)(implicit classTag: ClassTag[T]): Array[ActorRef] =
- filter(a => classTag.erasure.isAssignableFrom(a.actor.getClass) && a.isDefinedAt(message))
-
- /**
- * Finds all actors that satisfy a predicate.
- */
- def filter(p: ActorRef => Boolean): Array[ActorRef] = {
- val all = new ListBuffer[ActorRef]
- val elements = actorsByUUID.elements
- while (elements.hasMoreElements) {
- val actorId = elements.nextElement
- if (p(actorId)) all += actorId
- }
- all.toArray
- }
-
- /**
- * Finds all actors that are subtypes of the class passed in as the ClassTag argument.
- */
- def actorsFor[T <: Actor](implicit classTag: ClassTag[T]): Array[ActorRef] =
- actorsFor[T](classTag.erasure.asInstanceOf[Class[T]])
-
- /**
- * Finds any actor that matches T. Very expensive, traverses ALL alive actors.
- */
- def actorFor[T <: Actor](implicit classTag: ClassTag[T]): Option[ActorRef] =
- find({ case a: ActorRef if classTag.erasure.isAssignableFrom(a.actor.getClass) => a })
-
- /**
- * Finds all actors of type or sub-type specified by the class passed in as the Class argument.
- */
- def actorsFor[T <: Actor](clazz: Class[T]): Array[ActorRef] =
- filter(a => clazz.isAssignableFrom(a.actor.getClass))
-
- /**
- * Finds all actors that has a specific id.
- */
- def actorsFor(id: String): Array[ActorRef] = actorsById values id
-
- /**
- * Finds the actor that has a specific UUID.
- */
- def actorFor(uuid: Uuid): Option[ActorRef] = Option(actorsByUUID get uuid)
-
- /**
- * Returns all typed actors in the system.
- */
- def typedActors: Array[AnyRef] = filterTypedActors(_ => true)
-
- /**
- * Invokes a function for all typed actors.
- */
- def foreachTypedActor(f: (AnyRef) => Unit) = {
- TypedActorModule.ensureEnabled
- val elements = actorsByUUID.elements
- while (elements.hasMoreElements) {
- val proxy = typedActorFor(elements.nextElement)
- if (proxy.isDefined) f(proxy.get)
- }
- }
-
- /**
- * Invokes the function on all known typed actors until it returns Some
- * Returns None if the function never returns Some
- */
- def findTypedActor[T](f: PartialFunction[AnyRef, T]): Option[T] = {
- TypedActorModule.ensureEnabled
- val elements = actorsByUUID.elements
- while (elements.hasMoreElements) {
- val proxy = typedActorFor(elements.nextElement)
- if (proxy.isDefined && (f isDefinedAt proxy)) return Some(f(proxy))
- }
- None
- }
-
- /**
- * Finds all typed actors that satisfy a predicate.
- */
- def filterTypedActors(p: AnyRef => Boolean): Array[AnyRef] = {
- TypedActorModule.ensureEnabled
- val all = new ListBuffer[AnyRef]
- val elements = actorsByUUID.elements
- while (elements.hasMoreElements) {
- val proxy = typedActorFor(elements.nextElement)
- if (proxy.isDefined && p(proxy.get)) all += proxy.get
- }
- all.toArray
- }
-
- /**
- * Finds all typed actors that are subtypes of the class passed in as the ClassTag argument.
- */
- def typedActorsFor[T <: AnyRef](implicit classTag: ClassTag[T]): Array[AnyRef] = {
- TypedActorModule.ensureEnabled
- typedActorsFor[T](classTag.erasure.asInstanceOf[Class[T]])
- }
-
- /**
- * Finds any typed actor that matches T.
- */
- def typedActorFor[T <: AnyRef](implicit classTag: ClassTag[T]): Option[AnyRef] = {
- TypedActorModule.ensureEnabled
- def predicate(proxy: AnyRef): Boolean = {
- val actorRef = TypedActorModule.typedActorObjectInstance.get.actorFor(proxy)
- actorRef.isDefined && classTag.erasure.isAssignableFrom(actorRef.get.actor.getClass)
- }
- findTypedActor({ case a: Some[AnyRef] if predicate(a.get) => a })
- }
-
- /**
- * Finds all typed actors of type or sub-type specified by the class passed in as the Class argument.
- */
- def typedActorsFor[T <: AnyRef](clazz: Class[T]): Array[AnyRef] = {
- TypedActorModule.ensureEnabled
- def predicate(proxy: AnyRef): Boolean = {
- val actorRef = TypedActorModule.typedActorObjectInstance.get.actorFor(proxy)
- actorRef.isDefined && clazz.isAssignableFrom(actorRef.get.actor.getClass)
- }
- filterTypedActors(predicate)
- }
-
- /**
- * Finds all typed actors that have a specific id.
- */
- def typedActorsFor(id: String): Array[AnyRef] = {
- TypedActorModule.ensureEnabled
- val actorRefs = actorsById values id
- actorRefs.flatMap(typedActorFor(_))
- }
-
- /**
- * Finds the typed actor that has a specific UUID.
- */
- def typedActorFor(uuid: Uuid): Option[AnyRef] = {
- TypedActorModule.ensureEnabled
- val actorRef = actorsByUUID get uuid
- if (actorRef eq null) None
- else typedActorFor(actorRef)
- }
-
- /**
- * Get the typed actor proxy for a given typed actor ref.
- */
- private def typedActorFor(actorRef: ActorRef): Option[AnyRef] = {
- TypedActorModule.typedActorObjectInstance.get.proxyFor(actorRef)
- }
-
- /**
- * Registers an actor in the ActorRegistry.
- */
- private[akka] def register(actor: ActorRef) {
- val id = actor.id
- val uuid = actor.uuid
-
- actorsById.put(id, actor)
- actorsByUUID.put(uuid, actor)
-
- // notify listeners
- notifyListeners(ActorRegistered(actor))
- }
-
- /**
- * Unregisters an actor in the ActorRegistry.
- */
- private[akka] def unregister(actor: ActorRef) {
- val id = actor.id
- val uuid = actor.uuid
-
- actorsByUUID remove uuid
- actorsById.remove(id, actor)
-
- // notify listeners
- notifyListeners(ActorUnregistered(actor))
- }
-
- /**
- * Shuts down and unregisters all actors in the system.
- */
- def shutdownAll() {
- if (TypedActorModule.isEnabled) {
- val elements = actorsByUUID.elements
- while (elements.hasMoreElements) {
- val actorRef = elements.nextElement
- val proxy = typedActorFor(actorRef)
- if (proxy.isDefined) TypedActorModule.typedActorObjectInstance.get.stop(proxy.get)
- else actorRef.stop()
- }
- } else foreach(_.stop())
- if (Remote.isEnabled) {
- Actor.remote.clear //TODO: REVISIT: Should this be here?
- }
- actorsByUUID.clear
- actorsById.clear
- }
-}
-
-/**
- * An implementation of a ConcurrentMultiMap
- * Adds/remove is serialized over the specified key
- * Reads are fully concurrent <-- el-cheapo
- *
- * @author Viktor Klang
- */
-class Index[K <: AnyRef, V <: AnyRef: ArrayTag] {
- private val Naught = Array[V]() //Nil for Arrays
- private val container = new ConcurrentHashMap[K, JSet[V]]
- private val emptySet = new ConcurrentSkipListSet[V]
-
- /**
- * Associates the value of type V with the key of type K
- * @return true if the value didn't exist for the key previously, and false otherwise
- */
- def put(key: K, value: V): Boolean = {
- //Tailrecursive spin-locking put
- @tailrec
- def spinPut(k: K, v: V): Boolean = {
- var retry = false
- var added = false
- val set = container get k
-
- if (set ne null) {
- set.synchronized {
- if (set.isEmpty) retry = true //IF the set is empty then it has been removed, so signal retry
- else { //Else add the value to the set and signal that retry is not needed
- added = set add v
- retry = false
- }
- }
- } else {
- val newSet = new ConcurrentSkipListSet[V]
- newSet add v
-
- // Parry for two simultaneous putIfAbsent(id,newSet)
- val oldSet = container.putIfAbsent(k, newSet)
- if (oldSet ne null) {
- oldSet.synchronized {
- if (oldSet.isEmpty) retry = true //IF the set is empty then it has been removed, so signal retry
- else { //Else try to add the value to the set and signal that retry is not needed
- added = oldSet add v
- retry = false
- }
- }
- } else added = true
- }
-
- if (retry) spinPut(k, v)
- else added
- }
-
- spinPut(key, value)
- }
-
- /**
- * @return a _new_ array of all existing values for the given key at the time of the call
- */
- def values(key: K): Array[V] = {
- val set: JSet[V] = container get key
- val result = if (set ne null) set toArray Naught else Naught
- result.asInstanceOf[Array[V]]
- }
-
- /**
- * @return Some(value) for the first matching value where the supplied function returns true for the given key,
- * if no matches it returns None
- */
- def findValue(key: K)(f: (V) => Boolean): Option[V] = {
- import scala.collection.convert.wrapAsScala._
- val set = container get key
- if (set ne null) set.iterator.find(f)
- else None
- }
-
- /**
- * Applies the supplied function to all keys and their values
- */
- def foreach(fun: (K, V) => Unit) {
- import scala.collection.convert.wrapAsScala._
- container.entrySet foreach { (e) =>
- e.getValue.foreach(fun(e.getKey, _))
- }
- }
-
- /**
- * Disassociates the value of type V from the key of type K
- * @return true if the value was disassociated from the key and false if it wasn't previously associated with the key
- */
- def remove(key: K, value: V): Boolean = {
- val set = container get key
-
- if (set ne null) {
- set.synchronized {
- if (set.remove(value)) { //If we can remove the value
- if (set.isEmpty) //and the set becomes empty
- container.remove(key, emptySet) //We try to remove the key if it's mapped to an empty set
-
- true //Remove succeeded
- } else false //Remove failed
- }
- } else false //Remove failed
- }
-
- /**
- * @return true if the underlying containers is empty, may report false negatives when the last remove is underway
- */
- def isEmpty: Boolean = container.isEmpty
-
- /**
- * Removes all keys and all values
- */
- def clear = foreach { case (k, v) => remove(k, v) }
-}
diff --git a/test/disabled/presentation/akka/src/akka/actor/Actors.java b/test/disabled/presentation/akka/src/akka/actor/Actors.java
deleted file mode 100644
index a5ec9f37dc..0000000000
--- a/test/disabled/presentation/akka/src/akka/actor/Actors.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package akka.actor;
-
-import akka.japi.Creator;
-import akka.remoteinterface.RemoteSupport;
-
-/**
- * JAVA API for
- * - creating actors,
- * - creating remote actors,
- * - locating actors
- */
-public class Actors {
- /**
- *
- * @return The actor registry
- */
- public static ActorRegistry registry() {
- return Actor$.MODULE$.registry();
- }
-
- /**
- *
- * @return
- * @throws UnsupportedOperationException If remoting isn't configured
- * @throws ModuleNotAvailableException If the class for the remote support cannot be loaded
- */
- public static RemoteSupport remote() {
- return Actor$.MODULE$.remote();
- }
-
- /**
- * NOTE: Use this convenience method with care, do NOT make it possible to get a reference to the
- * UntypedActor instance directly, but only through its 'ActorRef' wrapper reference.
- * <p/>
- * Creates an ActorRef out of the Actor. Allows you to pass in the instance for the UntypedActor.
- * Only use this method when you need to pass in constructor arguments into the 'UntypedActor'.
- * <p/>
- * You use it by implementing the UntypedActorFactory interface.
- * Example in Java:
- * <pre>
- * ActorRef actor = Actors.actorOf(new UntypedActorFactory() {
- * public UntypedActor create() {
- * return new MyUntypedActor("service:name", 5);
- * }
- * });
- * actor.start();
- * actor.sendOneWay(message, context);
- * actor.stop();
- * </pre>
- */
- public static ActorRef actorOf(final Creator<Actor> factory) {
- return Actor$.MODULE$.actorOf(factory);
- }
-
- /**
- * Creates an ActorRef out of the Actor type represented by the class provided.
- * Example in Java:
- * <pre>
- * ActorRef actor = Actors.actorOf(MyUntypedActor.class);
- * actor.start();
- * actor.sendOneWay(message, context);
- * actor.stop();
- * </pre>
- * You can create and start the actor in one statement like this:
- * <pre>
- * val actor = Actors.actorOf(MyActor.class).start();
- * </pre>
- */
- public static ActorRef actorOf(final Class<? extends Actor> type) {
- return Actor$.MODULE$.actorOf(type);
- }
-
- /**
- * The message that is sent when an Actor gets a receive timeout.
- * <pre>
- * if( message == receiveTimeout() ) {
- * //Timed out
- * }
- * </pre>
- * @return the single instance of ReceiveTimeout
- */
- public final static ReceiveTimeout$ receiveTimeout() {
- return ReceiveTimeout$.MODULE$;
- }
-
- /**
- * The message that when sent to an Actor kills it by throwing an exception.
- * <pre>
- * actor.sendOneWay(kill());
- * </pre>
- * @return the single instance of Kill
- */
- public final static Kill$ kill() {
- return Kill$.MODULE$;
- }
-
-
- /**
- * The message that when sent to an Actor shuts it down by calling 'stop'.
- * <pre>
- * actor.sendOneWay(poisonPill());
- * </pre>
- * @return the single instance of PoisonPill
- */
- public final static PoisonPill$ poisonPill() {
- return PoisonPill$.MODULE$;
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/actor/BootableActorLoaderService.scala b/test/disabled/presentation/akka/src/akka/actor/BootableActorLoaderService.scala
deleted file mode 100644
index a54fca9ac7..0000000000
--- a/test/disabled/presentation/akka/src/akka/actor/BootableActorLoaderService.scala
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.actor
-
-import java.io.File
-import java.net.{ URL, URLClassLoader }
-import java.util.jar.JarFile
-
-import akka.util.{ Bootable }
-import akka.config.Config._
-
-/**
- * Handles all modules in the deploy directory (load and unload)
- */
-trait BootableActorLoaderService extends Bootable {
-
- val BOOT_CLASSES = config.getList("akka.boot")
- lazy val applicationLoader: Option[ClassLoader] = createApplicationClassLoader
-
- protected def createApplicationClassLoader: Option[ClassLoader] = Some({
- if (HOME.isDefined) {
- val DEPLOY = HOME.get + "/deploy"
- val DEPLOY_DIR = new File(DEPLOY)
- if (!DEPLOY_DIR.exists) {
- System.exit(-1)
- }
- val filesToDeploy = DEPLOY_DIR.listFiles.toArray.toList
- .asInstanceOf[List[File]].filter(_.getName.endsWith(".jar"))
- var dependencyJars: List[URL] = Nil
- filesToDeploy.map { file =>
- val jarFile = new JarFile(file)
- val en = jarFile.entries
- while (en.hasMoreElements) {
- val name = en.nextElement.getName
- if (name.endsWith(".jar")) dependencyJars ::= new File(
- String.format("jar:file:%s!/%s", jarFile.getName, name)).toURI.toURL
- }
- }
- val toDeploy = filesToDeploy.map(_.toURI.toURL)
- val allJars = toDeploy ::: dependencyJars
-
- new URLClassLoader(allJars.toArray, Thread.currentThread.getContextClassLoader)
- } else Thread.currentThread.getContextClassLoader
- })
-
- abstract override def onLoad = {
- super.onLoad
-
- for (loader ← applicationLoader; clazz ← BOOT_CLASSES) {
- loader.loadClass(clazz).newInstance
- }
- }
-
- abstract override def onUnload = {
- super.onUnload
- Actor.registry.shutdownAll()
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/actor/FSM.scala b/test/disabled/presentation/akka/src/akka/actor/FSM.scala
deleted file mode 100644
index d9cd9a9ca2..0000000000
--- a/test/disabled/presentation/akka/src/akka/actor/FSM.scala
+++ /dev/null
@@ -1,527 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-package akka.actor
-
-import akka.util._
-import akka.event.EventHandler
-
-import scala.collection.mutable
-import java.util.concurrent.ScheduledFuture
-
-object FSM {
-
- object NullFunction extends PartialFunction[Any, Nothing] {
- def isDefinedAt(o: Any) = false
- def apply(o: Any) = sys.error("undefined")
- }
-
- case class CurrentState[S](fsmRef: ActorRef, state: S)
- case class Transition[S](fsmRef: ActorRef, from: S, to: S)
- case class SubscribeTransitionCallBack(actorRef: ActorRef)
- case class UnsubscribeTransitionCallBack(actorRef: ActorRef)
-
- sealed trait Reason
- case object Normal extends Reason
- case object Shutdown extends Reason
- case class Failure(cause: Any) extends Reason
-
- case object StateTimeout
- case class TimeoutMarker(generation: Long)
-
- case class Timer(name: String, msg: AnyRef, repeat: Boolean, generation: Int) {
- private var ref: Option[ScheduledFuture[AnyRef]] = _
-
- def schedule(actor: ActorRef, timeout: Duration) {
- if (repeat) {
- ref = Some(Scheduler.schedule(actor, this, timeout.length, timeout.length, timeout.unit))
- } else {
- ref = Some(Scheduler.scheduleOnce(actor, this, timeout.length, timeout.unit))
- }
- }
-
- def cancel {
- if (ref.isDefined) {
- ref.get.cancel(true)
- ref = None
- }
- }
- }
-
- /*
- * This extractor is just convenience for matching a (S, S) pair, including a
- * reminder what the new state is.
- */
- object -> {
- def unapply[S](in: (S, S)) = Some(in)
- }
-
- /*
- * With these implicits in scope, you can write "5 seconds" anywhere a
- * Duration or Option[Duration] is expected. This is conveniently true
- * for derived classes.
- */
- implicit def d2od(d: Duration): Option[Duration] = Some(d)
-}
-
-/**
- * Finite State Machine actor trait. Use as follows:
- *
- * <pre>
- * object A {
- * trait State
- * case class One extends State
- * case class Two extends State
- *
- * case class Data(i : Int)
- * }
- *
- * class A extends Actor with FSM[A.State, A.Data] {
- * import A._
- *
- * startWith(One, Data(42))
- * when(One) {
- * case Event(SomeMsg, Data(x)) => ...
- * case Ev(SomeMsg) => ... // convenience when data not needed
- * }
- * when(Two, stateTimeout = 5 seconds) { ... }
- * initialize
- * }
- * </pre>
- *
- * Within the partial function the following values are returned for effecting
- * state transitions:
- *
- * - <code>stay</code> for staying in the same state
- * - <code>stay using Data(...)</code> for staying in the same state, but with
- * different data
- * - <code>stay forMax 5.millis</code> for staying with a state timeout; can be
- * combined with <code>using</code>
- * - <code>goto(...)</code> for changing into a different state; also supports
- * <code>using</code> and <code>forMax</code>
- * - <code>stop</code> for terminating this FSM actor
- *
- * Each of the above also supports the method <code>replying(AnyRef)</code> for
- * sending a reply before changing state.
- *
- * While changing state, custom handlers may be invoked which are registered
- * using <code>onTransition</code>. This is meant to enable concentrating
- * different concerns in different places; you may choose to use
- * <code>when</code> for describing the properties of a state, including of
- * course initiating transitions, but you can describe the transitions using
- * <code>onTransition</code> to avoid having to duplicate that code among
- * multiple paths which lead to a transition:
- *
- * <pre>
- * onTransition {
- * case Active -&gt; _ =&gt; cancelTimer("activeTimer")
- * }
- * </pre>
- *
- * Multiple such blocks are supported and all of them will be called, not only
- * the first matching one.
- *
- * Another feature is that other actors may subscribe for transition events by
- * sending a <code>SubscribeTransitionCallback</code> message to this actor;
- * use <code>UnsubscribeTransitionCallback</code> before stopping the other
- * actor.
- *
- * State timeouts set an upper bound to the time which may pass before another
- * message is received in the current state. If no external message is
- * available, then upon expiry of the timeout a StateTimeout message is sent.
- * Note that this message will only be received in the state for which the
- * timeout was set and that any message received will cancel the timeout
- * (possibly to be started again by the next transition).
- *
- * Another feature is the ability to install and cancel single-shot as well as
- * repeated timers which arrange for the sending of a user-specified message:
- *
- * <pre>
- * setTimer("tock", TockMsg, 1 second, true) // repeating
- * setTimer("lifetime", TerminateMsg, 1 hour, false) // single-shot
- * cancelTimer("tock")
- * timerActive_? ("tock")
- * </pre>
- */
-trait FSM[S, D] extends ListenerManagement {
- this: Actor =>
-
- import FSM._
-
- type StateFunction = scala.PartialFunction[Event[D], State]
- type Timeout = Option[Duration]
- type TransitionHandler = PartialFunction[(S, S), Unit]
-
- /**
- * ****************************************
- * DSL
- * ****************************************
- */
-
- /**
- * Insert a new StateFunction at the end of the processing chain for the
- * given state. If the stateTimeout parameter is set, entering this state
- * without a differing explicit timeout setting will trigger a StateTimeout
- * event; the same is true when using #stay.
- *
- * @param stateName designator for the state
- * @param stateTimeout default state timeout for this state
- * @param stateFunction partial function describing response to input
- */
- protected final def when(stateName: S, stateTimeout: Timeout = None)(stateFunction: StateFunction) = {
- register(stateName, stateFunction, stateTimeout)
- }
-
- /**
- * Set initial state. Call this method from the constructor before the #initialize method.
- *
- * @param stateName initial state designator
- * @param stateData initial state data
- * @param timeout state timeout for the initial state, overriding the default timeout for that state
- */
- protected final def startWith(stateName: S,
- stateData: D,
- timeout: Timeout = None) = {
- currentState = State(stateName, stateData, timeout)
- }
-
- /**
- * Produce transition to other state. Return this from a state function in
- * order to effect the transition.
- *
- * @param nextStateName state designator for the next state
- * @return state transition descriptor
- */
- protected final def goto(nextStateName: S): State = {
- State(nextStateName, currentState.stateData)
- }
-
- /**
- * Produce "empty" transition descriptor. Return this from a state function
- * when no state change is to be effected.
- *
- * @return descriptor for staying in current state
- */
- protected final def stay(): State = {
- // cannot directly use currentState because of the timeout field
- goto(currentState.stateName)
- }
-
- /**
- * Produce change descriptor to stop this FSM actor with reason "Normal".
- */
- protected final def stop(): State = {
- stop(Normal)
- }
-
- /**
- * Produce change descriptor to stop this FSM actor including specified reason.
- */
- protected final def stop(reason: Reason): State = {
- stop(reason, currentState.stateData)
- }
-
- /**
- * Produce change descriptor to stop this FSM actor including specified reason.
- */
- protected final def stop(reason: Reason, stateData: D): State = {
- stay using stateData withStopReason (reason)
- }
-
- /**
- * Schedule named timer to deliver message after given delay, possibly repeating.
- * @param name identifier to be used with cancelTimer()
- * @param msg message to be delivered
- * @param timeout delay of first message delivery and between subsequent messages
- * @param repeat send once if false, scheduleAtFixedRate if true
- * @return current state descriptor
- */
- protected final def setTimer(name: String, msg: AnyRef, timeout: Duration, repeat: Boolean): State = {
- if (timers contains name) {
- timers(name).cancel
- }
- val timer = Timer(name, msg, repeat, timerGen.next)
- timer.schedule(self, timeout)
- timers(name) = timer
- stay
- }
-
- /**
- * Cancel named timer, ensuring that the message is not subsequently delivered (no race).
- * @param name of the timer to cancel
- */
- protected final def cancelTimer(name: String) = {
- if (timers contains name) {
- timers(name).cancel
- timers -= name
- }
- }
-
- /**
- * Inquire whether the named timer is still active. Returns true unless the
- * timer does not exist, has previously been canceled or if it was a
- * single-shot timer whose message was already received.
- */
- protected final def timerActive_?(name: String) = timers contains name
-
- /**
- * Set state timeout explicitly. This method can safely be used from within a
- * state handler.
- */
- protected final def setStateTimeout(state: S, timeout: Timeout) {
- stateTimeouts(state) = timeout
- }
-
- /**
- * Set handler which is called upon each state transition, i.e. not when
- * staying in the same state. This may use the pair extractor defined in the
- * FSM companion object like so:
- *
- * <pre>
- * onTransition {
- * case Old -&gt; New =&gt; doSomething
- * }
- * </pre>
- *
- * It is also possible to supply a 2-ary function object:
- *
- * <pre>
- * onTransition(handler _)
- *
- * private def handler(from: S, to: S) { ... }
- * </pre>
- *
- * The underscore is unfortunately necessary to enable the nicer syntax shown
- * above (it uses the implicit conversion total2pf under the hood).
- *
- * <b>Multiple handlers may be installed, and every one of them will be
- * called, not only the first one matching.</b>
- */
- protected final def onTransition(transitionHandler: TransitionHandler) {
- transitionEvent :+= transitionHandler
- }
-
- /**
- * Convenience wrapper for using a total function instead of a partial
- * function literal. To be used with onTransition.
- */
- implicit protected final def total2pf(transitionHandler: (S, S) => Unit) =
- new PartialFunction[(S, S), Unit] {
- def isDefinedAt(in: (S, S)) = true
- def apply(in: (S, S)) { transitionHandler(in._1, in._2) }
- }
-
- /**
- * Set handler which is called upon termination of this FSM actor.
- */
- protected final def onTermination(terminationHandler: PartialFunction[StopEvent[S, D], Unit]) = {
- terminateEvent = terminationHandler
- }
-
- /**
- * Set handler which is called upon reception of unhandled messages.
- */
- protected final def whenUnhandled(stateFunction: StateFunction) = {
- handleEvent = stateFunction orElse handleEventDefault
- }
-
- /**
- * Verify existence of initial state and setup timers. This should be the
- * last call within the constructor.
- */
- def initialize {
- makeTransition(currentState)
- }
-
- /**
- * ****************************************************************
- * PRIVATE IMPLEMENTATION DETAILS
- * ****************************************************************
- */
-
- /*
- * FSM State data and current timeout handling
- */
- private var currentState: State = _
- private var timeoutFuture: Option[ScheduledFuture[AnyRef]] = None
- private var generation: Long = 0L
-
- /*
- * Timer handling
- */
- private val timers = mutable.Map[String, Timer]()
- private val timerGen = Iterator from 0
-
- /*
- * State definitions
- */
- private val stateFunctions = mutable.Map[S, StateFunction]()
- private val stateTimeouts = mutable.Map[S, Timeout]()
-
- private def register(name: S, function: StateFunction, timeout: Timeout) {
- if (stateFunctions contains name) {
- stateFunctions(name) = stateFunctions(name) orElse function
- stateTimeouts(name) = timeout orElse stateTimeouts(name)
- } else {
- stateFunctions(name) = function
- stateTimeouts(name) = timeout
- }
- }
-
- /*
- * unhandled event handler
- */
- private val handleEventDefault: StateFunction = {
- case Event(value, stateData) =>
- stay
- }
- private var handleEvent: StateFunction = handleEventDefault
-
- /*
- * termination handling
- */
- private var terminateEvent: PartialFunction[StopEvent[S, D], Unit] = {
- case StopEvent(Failure(cause), _, _) =>
- case StopEvent(reason, _, _) =>
- }
-
- /*
- * transition handling
- */
- private var transitionEvent: List[TransitionHandler] = Nil
- private def handleTransition(prev: S, next: S) {
- val tuple = (prev, next)
- for (te ← transitionEvent) { if (te.isDefinedAt(tuple)) te(tuple) }
- }
-
- // ListenerManagement shall not start() or stop() listener actors
- override protected val manageLifeCycleOfListeners = false
-
- /**
- * *******************************************
- * Main actor receive() method
- * *******************************************
- */
- override final protected def receive: Receive = {
- case TimeoutMarker(gen) =>
- if (generation == gen) {
- processEvent(StateTimeout)
- }
- case t@Timer(name, msg, repeat, generation) =>
- if ((timers contains name) && (timers(name).generation == generation)) {
- processEvent(msg)
- if (!repeat) {
- timers -= name
- }
- }
- case SubscribeTransitionCallBack(actorRef) =>
- addListener(actorRef)
- // send current state back as reference point
- try {
- actorRef ! CurrentState(self, currentState.stateName)
- } catch {
- case e: ActorInitializationException =>
- EventHandler.warning(this, "trying to register not running listener")
- }
- case UnsubscribeTransitionCallBack(actorRef) =>
- removeListener(actorRef)
- case value => {
- if (timeoutFuture.isDefined) {
- timeoutFuture.get.cancel(true)
- timeoutFuture = None
- }
- generation += 1
- processEvent(value)
- }
- }
-
- private def processEvent(value: Any) = {
- val event = Event(value, currentState.stateData)
- val stateFunc = stateFunctions(currentState.stateName)
- val nextState = if (stateFunc isDefinedAt event) {
- stateFunc(event)
- } else {
- // handleEventDefault ensures that this is always defined
- handleEvent(event)
- }
- nextState.stopReason match {
- case Some(reason) => terminate(reason)
- case None => makeTransition(nextState)
- }
- }
-
- private def makeTransition(nextState: State) = {
- if (!stateFunctions.contains(nextState.stateName)) {
- terminate(Failure("Next state %s does not exist".format(nextState.stateName)))
- } else {
- if (currentState.stateName != nextState.stateName) {
- handleTransition(currentState.stateName, nextState.stateName)
- notifyListeners(Transition(self, currentState.stateName, nextState.stateName))
- }
- applyState(nextState)
- }
- }
-
- private def applyState(nextState: State) = {
- currentState = nextState
- val timeout = if (currentState.timeout.isDefined) currentState.timeout else stateTimeouts(currentState.stateName)
- if (timeout.isDefined) {
- val t = timeout.get
- if (t.finite_? && t.length >= 0) {
- timeoutFuture = Some(Scheduler.scheduleOnce(self, TimeoutMarker(generation), t.length, t.unit))
- }
- }
- }
-
- private def terminate(reason: Reason) = {
- terminateEvent.apply(StopEvent(reason, currentState.stateName, currentState.stateData))
- self.stop()
- }
-
- case class Event[D](event: Any, stateData: D)
- object Ev {
- def unapply[D](e: Event[D]): Option[Any] = Some(e.event)
- }
-
- case class State(stateName: S, stateData: D, timeout: Timeout = None) {
-
- /**
- * Modify state transition descriptor to include a state timeout for the
- * next state. This timeout overrides any default timeout set for the next
- * state.
- */
- def forMax(timeout: Duration): State = {
- copy(timeout = Some(timeout))
- }
-
- /**
- * Send reply to sender of the current message, if available.
- *
- * @return this state transition descriptor
- */
- def replying(replyValue: Any): State = {
- self.sender match {
- case Some(sender) => sender ! replyValue
- case None =>
- }
- this
- }
-
- /**
- * Modify state transition descriptor with new state data. The data will be
- * set when transitioning to the new state.
- */
- def using(nextStateDate: D): State = {
- copy(stateData = nextStateDate)
- }
-
- private[akka] var stopReason: Option[Reason] = None
-
- private[akka] def withStopReason(reason: Reason): State = {
- stopReason = Some(reason)
- this
- }
- }
-
- case class StopEvent[S, D](reason: Reason, currentState: S, stateData: D)
-}
diff --git a/test/disabled/presentation/akka/src/akka/actor/Scheduler.scala b/test/disabled/presentation/akka/src/akka/actor/Scheduler.scala
deleted file mode 100644
index ef540f2df3..0000000000
--- a/test/disabled/presentation/akka/src/akka/actor/Scheduler.scala
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 2007 WorldWide Conferencing, LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Rework of David Pollak's ActorPing class in the Lift Project
- * which is licensed under the Apache 2 License.
- */
-package akka.actor
-
-import java.util.concurrent._
-
-import akka.event.EventHandler
-import akka.AkkaException
-
-object Scheduler {
- import Actor._
-
- case class SchedulerException(msg: String, e: Throwable) extends RuntimeException(msg, e)
-
- @volatile
- private var service = Executors.newSingleThreadScheduledExecutor(SchedulerThreadFactory)
-
- /**
- * Schedules to send the specified message to the receiver after initialDelay and then repeated after delay
- */
- def schedule(receiver: ActorRef, message: AnyRef, initialDelay: Long, delay: Long, timeUnit: TimeUnit): ScheduledFuture[AnyRef] = {
- try {
- service.scheduleAtFixedRate(
- new Runnable { def run = receiver ! message },
- initialDelay, delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]]
- } catch {
- case e: Exception =>
- val error = SchedulerException(message + " could not be scheduled on " + receiver, e)
- EventHandler.error(error, this, "%s @ %s".format(receiver, message))
- throw error
- }
- }
-
- /**
- * Schedules to run specified function to the receiver after initialDelay and then repeated after delay,
- * avoid blocking operations since this is executed in the schedulers thread
- */
- def schedule(f: () => Unit, initialDelay: Long, delay: Long, timeUnit: TimeUnit): ScheduledFuture[AnyRef] =
- schedule(new Runnable { def run = f() }, initialDelay, delay, timeUnit)
-
- /**
- * Schedules to run specified runnable to the receiver after initialDelay and then repeated after delay,
- * avoid blocking operations since this is executed in the schedulers thread
- */
- def schedule(runnable: Runnable, initialDelay: Long, delay: Long, timeUnit: TimeUnit): ScheduledFuture[AnyRef] = {
- try {
- service.scheduleAtFixedRate(runnable, initialDelay, delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]]
- } catch {
- case e: Exception =>
- val error = SchedulerException("Failed to schedule a Runnable", e)
- EventHandler.error(error, this, error.getMessage)
- throw error
- }
- }
-
- /**
- * Schedules to send the specified message to the receiver after delay
- */
- def scheduleOnce(receiver: ActorRef, message: AnyRef, delay: Long, timeUnit: TimeUnit): ScheduledFuture[AnyRef] = {
- try {
- service.schedule(
- new Runnable { def run = receiver ! message },
- delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]]
- } catch {
- case e: Exception =>
- val error = SchedulerException(message + " could not be scheduleOnce'd on " + receiver, e)
- EventHandler.error(e, this, receiver + " @ " + message)
- throw error
- }
- }
-
- /**
- * Schedules a function to be run after delay,
- * avoid blocking operations since the runnable is executed in the schedulers thread
- */
- def scheduleOnce(f: () => Unit, delay: Long, timeUnit: TimeUnit): ScheduledFuture[AnyRef] =
- scheduleOnce(new Runnable { def run = f() }, delay, timeUnit)
-
- /**
- * Schedules a runnable to be run after delay,
- * avoid blocking operations since the runnable is executed in the schedulers thread
- */
- def scheduleOnce(runnable: Runnable, delay: Long, timeUnit: TimeUnit): ScheduledFuture[AnyRef] = {
- try {
- service.schedule(runnable, delay, timeUnit).asInstanceOf[ScheduledFuture[AnyRef]]
- } catch {
- case e: Exception =>
- val error = SchedulerException("Failed to scheduleOnce a Runnable", e)
- EventHandler.error(e, this, error.getMessage)
- throw error
- }
- }
-
- def shutdown() {
- synchronized {
- service.shutdown()
- }
- }
-
- def restart() {
- synchronized {
- shutdown()
- service = Executors.newSingleThreadScheduledExecutor(SchedulerThreadFactory)
- }
- }
-}
-
-private object SchedulerThreadFactory extends ThreadFactory {
- private var count = 0
- val threadFactory = Executors.defaultThreadFactory()
-
- def newThread(r: Runnable): Thread = {
- val thread = threadFactory.newThread(r)
- thread.setName("akka:scheduler-" + count)
- thread.setDaemon(true)
- thread
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/actor/Supervisor.scala b/test/disabled/presentation/akka/src/akka/actor/Supervisor.scala
deleted file mode 100644
index bec3c83f1a..0000000000
--- a/test/disabled/presentation/akka/src/akka/actor/Supervisor.scala
+++ /dev/null
@@ -1,176 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.actor
-
-import akka.AkkaException
-import akka.util._
-import ReflectiveAccess._
-import Actor._
-
-import java.util.concurrent.{ CopyOnWriteArrayList, ConcurrentHashMap }
-import java.net.InetSocketAddress
-import akka.config.Supervision._
-
-class SupervisorException private[akka] (message: String, cause: Throwable = null) extends AkkaException(message, cause)
-
-/**
- * Factory object for creating supervisors declarative. It creates instances of the 'Supervisor' class.
- * These are not actors, if you need a supervisor that is an Actor then you have to use the 'SupervisorActor'
- * factory object.
- * <p/>
- *
- * Here is a sample on how to use it:
- * <pre>
- * val supervisor = Supervisor(
- * SupervisorConfig(
- * RestartStrategy(OneForOne, 3, 10, List(classOf[Exception]),
- * Supervise(
- * myFirstActor,
- * Permanent) ::
- * Supervise(
- * mySecondActor,
- * Permanent) ::
- * Nil))
- * </pre>
- *
- * You dynamically link and unlink child children using the 'link' and 'unlink' methods.
- * <pre>
- * supervisor.link(child)
- * supervisor.unlink(child)
- * </pre>
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-object Supervisor {
- def apply(config: SupervisorConfig): Supervisor = SupervisorFactory(config).newInstance.start
-}
-
-/**
- * Use this factory instead of the Supervisor factory object if you want to control
- * instantiation and starting of the Supervisor, if not then it is easier and better
- * to use the Supervisor factory object.
- * <p>
- * Example usage:
- * <pre>
- * val factory = SupervisorFactory(
- * SupervisorConfig(
- * RestartStrategy(OneForOne, 3, 10, List(classOf[Exception]),
- * Supervise(
- * myFirstActor,
- * Permanent) ::
- * Supervise(
- * mySecondActor,
- * Permanent) ::
- * Nil))
- * </pre>
- *
- * Then create a new Supervisor tree with the concrete Services we have defined.
- *
- * <pre>
- * val supervisor = factory.newInstance
- * supervisor.start // start up all managed servers
- * </pre>
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-case class SupervisorFactory(val config: SupervisorConfig) {
-
- def newInstance: Supervisor = newInstanceFor(config)
-
- def newInstanceFor(config: SupervisorConfig): Supervisor = {
- val supervisor = new Supervisor(config.restartStrategy, config.maxRestartsHandler)
- supervisor.configure(config)
- supervisor.start
- supervisor
- }
-}
-
-/**
- * <b>NOTE:</b>
- * <p/>
- * The supervisor class is only used for the configuration system when configuring supervisor
- * hierarchies declaratively. Should not be used as part of the regular programming API. Instead
- * wire the children together using 'link', 'spawnLink' etc. and set the 'trapExit' flag in the
- * children that should trap error signals and trigger restart.
- * <p/>
- * See the Scaladoc for the SupervisorFactory for an example on how to declaratively wire up children.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-sealed class Supervisor(handler: FaultHandlingStrategy, maxRestartsHandler: (ActorRef, MaximumNumberOfRestartsWithinTimeRangeReached) => Unit) {
- import Supervisor._
-
- private val _childActors = new ConcurrentHashMap[String, List[ActorRef]]
- private val _childSupervisors = new CopyOnWriteArrayList[Supervisor]
-
- private[akka] val supervisor = actorOf(new SupervisorActor(handler, maxRestartsHandler)).start()
-
- def uuid = supervisor.uuid
-
- def start: Supervisor = {
- this
- }
-
- def shutdown(): Unit = supervisor.stop()
-
- def link(child: ActorRef) = supervisor.link(child)
-
- def unlink(child: ActorRef) = supervisor.unlink(child)
-
- def children: List[ActorRef] =
- _childActors.values.toArray.toList.asInstanceOf[List[List[ActorRef]]].flatten
-
- def childSupervisors: List[Supervisor] =
- _childActors.values.toArray.toList.asInstanceOf[List[Supervisor]]
-
- def configure(config: SupervisorConfig): Unit = config match {
- case SupervisorConfig(_, servers, _) =>
-
- servers.map(server =>
- server match {
- case Supervise(actorRef, lifeCycle, registerAsRemoteService) =>
- actorRef.start()
- val className = actorRef.actor.getClass.getName
- val currentActors = {
- val list = _childActors.get(className)
- if (list eq null) List[ActorRef]()
- else list
- }
- _childActors.put(className, actorRef :: currentActors)
- actorRef.lifeCycle = lifeCycle
- supervisor.link(actorRef)
- if (registerAsRemoteService)
- Actor.remote.register(actorRef)
- case supervisorConfig@SupervisorConfig(_, _, _) => // recursive supervisor configuration
- val childSupervisor = Supervisor(supervisorConfig)
- supervisor.link(childSupervisor.supervisor)
- _childSupervisors.add(childSupervisor)
- })
- }
-}
-
-/**
- * For internal use only.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-final class SupervisorActor private[akka] (handler: FaultHandlingStrategy, maxRestartsHandler: (ActorRef, MaximumNumberOfRestartsWithinTimeRangeReached) => Unit) extends Actor {
- self.faultHandler = handler
-
- override def postStop(): Unit = {
- val i = self.linkedActors.values.iterator
- while (i.hasNext) {
- val ref = i.next
- ref.stop()
- self.unlink(ref)
- }
- }
-
- def receive = {
- case max@MaximumNumberOfRestartsWithinTimeRangeReached(_, _, _, _) => maxRestartsHandler(self, max)
- case unknown => throw new SupervisorException(
- "SupervisorActor can not respond to messages.\n\tUnknown message [" + unknown + "]")
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/actor/UntypedActor.scala b/test/disabled/presentation/akka/src/akka/actor/UntypedActor.scala
deleted file mode 100644
index cbc43f22f8..0000000000
--- a/test/disabled/presentation/akka/src/akka/actor/UntypedActor.scala
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.actor
-
-import akka.japi.{ Creator, Procedure }
-
-/**
- * Subclass this abstract class to create a MDB-style untyped actor.
- * <p/>
- * This class is meant to be used from Java.
- * <p/>
- * Here is an example on how to create and use an UntypedActor:
- * <pre>
- * public class SampleUntypedActor extends UntypedActor {
- * public void onReceive(Object message) throws Exception {
- * if (message instanceof String) {
- * String msg = (String)message;
- *
- * if (msg.equals("UseReply")) {
- * // Reply to original sender of message using the 'replyUnsafe' method
- * getContext().replyUnsafe(msg + ":" + getContext().getUuid());
- *
- * } else if (msg.equals("UseSender") && getContext().getSender().isDefined()) {
- * // Reply to original sender of message using the sender reference
- * // also passing along my own reference (the context)
- * getContext().getSender().get().sendOneWay(msg, context);
- *
- * } else if (msg.equals("UseSenderFuture") && getContext().getSenderFuture().isDefined()) {
- * // Reply to original sender of message using the sender future reference
- * getContext().getSenderFuture().get().completeWithResult(msg);
- *
- * } else if (msg.equals("SendToSelf")) {
- * // Send message to the actor itself recursively
- * getContext().sendOneWay(msg)
- *
- * } else if (msg.equals("ForwardMessage")) {
- * // Retrieve an actor from the ActorRegistry by ID and get an ActorRef back
- * ActorRef actorRef = Actor.registry.actorsFor("some-actor-id").head();
- *
- * } else throw new IllegalArgumentException("Unknown message: " + message);
- * } else throw new IllegalArgumentException("Unknown message: " + message);
- * }
- *
- * public static void main(String[] args) {
- * ActorRef actor = Actors.actorOf(SampleUntypedActor.class);
- * actor.start();
- * actor.sendOneWay("SendToSelf");
- * actor.stop();
- * }
- * }
- * </pre>
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-abstract class UntypedActor extends Actor {
-
- /**
- * To be implemented by concrete UntypedActor. Defines the message handler.
- */
- @throws(classOf[Exception])
- def onReceive(message: Any): Unit
-
- /**
- * Returns the 'self' reference with the API.
- */
- def getContext(): ActorRef = self
-
- /**
- * Returns the 'self' reference with the API.
- */
- def context(): ActorRef = self
-
- /**
- * Java API for become
- */
- def become(behavior: Procedure[Any]): Unit = become(behavior, false)
-
- /*
- * Java API for become with optional discardOld
- */
- def become(behavior: Procedure[Any], discardOld: Boolean): Unit =
- super.become({ case msg => behavior.apply(msg) }, discardOld)
-
- /**
- * User overridable callback.
- * <p/>
- * Is called when an Actor is started by invoking 'actor.start()'.
- */
- override def preStart() {}
-
- /**
- * User overridable callback.
- * <p/>
- * Is called when 'actor.stop()' is invoked.
- */
- override def postStop() {}
-
- /**
- * User overridable callback.
- * <p/>
- * Is called on a crashed Actor right BEFORE it is restarted to allow clean up of resources before Actor is terminated.
- */
- override def preRestart(reason: Throwable) {}
-
- /**
- * User overridable callback.
- * <p/>
- * Is called right AFTER restart on the newly created Actor to allow reinitialization after an Actor crash.
- */
- override def postRestart(reason: Throwable) {}
-
- /**
- * User overridable callback.
- * <p/>
- * Is called when a message isn't handled by the current behavior of the actor
- * by default it throws an UnhandledMessageException
- */
- override def unhandled(msg: Any) {
- throw new UnhandledMessageException(msg, self)
- }
-
- final protected def receive = {
- case msg => onReceive(msg)
- }
-}
-
-/**
- * Factory closure for an UntypedActor, to be used with 'Actors.actorOf(factory)'.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-trait UntypedActorFactory extends Creator[Actor]
diff --git a/test/disabled/presentation/akka/src/akka/actor/package.scala b/test/disabled/presentation/akka/src/akka/actor/package.scala
deleted file mode 100644
index fbeeed49cb..0000000000
--- a/test/disabled/presentation/akka/src/akka/actor/package.scala
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka
-
-import actor.{ ScalaActorRef, ActorRef }
-
-package object actor {
- implicit def actorRef2Scala(ref: ActorRef): ScalaActorRef =
- ref.asInstanceOf[ScalaActorRef]
-
- implicit def scala2ActorRef(ref: ScalaActorRef): ActorRef =
- ref.asInstanceOf[ActorRef]
-
- type Uuid = com.eaio.uuid.UUID
-
- def newUuid(): Uuid = new Uuid()
-
- def uuidFrom(time: Long, clockSeqAndNode: Long): Uuid = new Uuid(time, clockSeqAndNode)
-
- def uuidFrom(uuid: String): Uuid = new Uuid(uuid)
-}
diff --git a/test/disabled/presentation/akka/src/akka/config/Config.scala b/test/disabled/presentation/akka/src/akka/config/Config.scala
deleted file mode 100644
index 6578c66f77..0000000000
--- a/test/disabled/presentation/akka/src/akka/config/Config.scala
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.config
-
-import akka.AkkaException
-
-class ConfigurationException(message: String, cause: Throwable = null) extends AkkaException(message, cause)
-class ModuleNotAvailableException(message: String, cause: Throwable = null) extends AkkaException(message, cause)
-
-/**
- * Loads up the configuration (from the akka.conf file).
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-object Config {
- val VERSION = "1.1.3"
-
- val HOME = {
- val envHome = System.getenv("AKKA_HOME") match {
- case null | "" | "." => None
- case value => Some(value)
- }
-
- val systemHome = System.getProperty("akka.home") match {
- case null | "" => None
- case value => Some(value)
- }
-
- envHome orElse systemHome
- }
-
- val config: Configuration = try {
- val confName = {
- val envConf = System.getenv("AKKA_MODE") match {
- case null | "" => None
- case value => Some(value)
- }
-
- val systemConf = System.getProperty("akka.mode") match {
- case null | "" => None
- case value => Some(value)
- }
-
- (envConf orElse systemConf).map("akka." + _ + ".conf").getOrElse("akka.conf")
- }
-
- val newInstance =
- if (System.getProperty("akka.config", "") != "") {
- val configFile = System.getProperty("akka.config", "")
- println("Loading config from -Dakka.config=" + configFile)
- Configuration.fromFile(configFile)
- } else if (getClass.getClassLoader.getResource(confName) ne null) {
- println("Loading config [" + confName + "] from the application classpath.")
- Configuration.fromResource(confName, getClass.getClassLoader)
- } else if (HOME.isDefined) {
- val configFile = HOME.get + "/config/" + confName
- println("AKKA_HOME is defined as [" + HOME.get + "], loading config from [" + configFile + "].")
- Configuration.fromFile(configFile)
- } else {
- println(
- "\nCan't load '" + confName + "'." +
- "\nOne of the three ways of locating the '" + confName + "' file needs to be defined:" +
- "\n\t1. Define the '-Dakka.config=...' system property option." +
- "\n\t2. Put the '" + confName + "' file on the classpath." +
- "\n\t3. Define 'AKKA_HOME' environment variable pointing to the root of the Akka distribution." +
- "\nI have no way of finding the '" + confName + "' configuration file." +
- "\nUsing default values everywhere.")
- Configuration.fromString("akka {}") // default empty config
- }
-
- val configVersion = newInstance.getString("akka.version", VERSION)
- if (configVersion != VERSION)
- throw new ConfigurationException(
- "Akka JAR version [" + VERSION + "] is different than the provided config version [" + configVersion + "]")
-
- newInstance
- } catch {
- case e =>
- System.err.println("Couldn't parse config, fatal error.")
- e.printStackTrace(System.err)
- System.exit(-1)
- throw e
- }
-
- val CONFIG_VERSION = config.getString("akka.version", VERSION)
-
- val TIME_UNIT = config.getString("akka.time-unit", "seconds")
-
- val startTime = System.currentTimeMillis
- def uptime = (System.currentTimeMillis - startTime) / 1000
-}
diff --git a/test/disabled/presentation/akka/src/akka/config/ConfigParser.scala b/test/disabled/presentation/akka/src/akka/config/ConfigParser.scala
deleted file mode 100644
index 73fac5e31b..0000000000
--- a/test/disabled/presentation/akka/src/akka/config/ConfigParser.scala
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- *
- * Based on Configgy by Robey Pointer.
- * Copyright 2009 Robey Pointer <robeypointer@gmail.com>
- * http://www.apache.org/licenses/LICENSE-2.0
- */
-
-package akka.config
-
-import scala.collection.mutable
-import scala.util.parsing.combinator._
-
-class ConfigParser(var prefix: String = "", map: mutable.Map[String, Any] = mutable.Map.empty[String, Any], importer: Importer) extends RegexParsers {
- val sections = mutable.Stack[String]()
-
- def createPrefix = {
- prefix = if (sections.isEmpty) "" else sections.toList.reverse.mkString("", ".", ".")
- }
-
- override val whiteSpace = """(\s+|#[^\n]*\n)+""".r
-
- // tokens
-
- val numberToken: Parser[String] = """-?\d+(\.\d+)?""".r
- val stringToken: Parser[String] = ("\"" + """([^\\\"]|\\[^ux]|\\\n|\\u[0-9a-fA-F]{4}|\\x[0-9a-fA-F]{2})*""" + "\"").r
- val booleanToken: Parser[String] = "(true|on|false|off)".r
- val identToken: Parser[String] = """([\da-zA-Z_][-\w]*)(\.[a-zA-Z_][-\w]*)*""".r
- val assignToken: Parser[String] = "=".r
- val sectionToken: Parser[String] = """[a-zA-Z][-\w]*""".r
-
- // values
-
- def value: Parser[Any] = number | string | list | boolean
- def number = numberToken
- def string = stringToken ^^ { s => s.substring(1, s.length - 1) }
- def list = "[" ~> repsep(string | numberToken, opt(",")) <~ (opt(",") ~ "]")
- def boolean = booleanToken
-
- // parser
-
- def root = rep(includeFile | assignment | sectionOpen | sectionClose)
-
- def includeFile = "include" ~> string ^^ {
- case filename: String =>
- new ConfigParser(prefix, map, importer) parse importer.importFile(filename)
- }
-
- def assignment = identToken ~ assignToken ~ value ^^ {
- case k ~ a ~ v => map(prefix + k) = v
- }
-
- def sectionOpen = sectionToken <~ "{" ^^ { name =>
- sections push name
- createPrefix
- }
-
- def sectionClose = "}" ^^ { _ =>
- if (sections.isEmpty) {
- failure("dangling close tag")
- } else {
- sections.pop
- createPrefix
- }
- }
-
- def parse(in: String): Map[String, Any] = {
- parseAll(root, in) match {
- case Success(result, _) => map.toMap
- case x@Failure(msg, _) => throw new ConfigurationException(x.toString)
- case x@Error(msg, _) => throw new ConfigurationException(x.toString)
- }
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/config/Configuration.scala b/test/disabled/presentation/akka/src/akka/config/Configuration.scala
deleted file mode 100644
index 81c32fce90..0000000000
--- a/test/disabled/presentation/akka/src/akka/config/Configuration.scala
+++ /dev/null
@@ -1,166 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- *
- * Based on Configgy by Robey Pointer.
- * Copyright 2009 Robey Pointer <robeypointer@gmail.com>
- * http://www.apache.org/licenses/LICENSE-2.0
- */
-
-package akka.config
-
-import java.io.File
-
-object Configuration {
- val DefaultPath = new File(".").getCanonicalPath
- val DefaultImporter = new FilesystemImporter(DefaultPath)
-
- def load(data: String, importer: Importer = DefaultImporter): Configuration = {
- val parser = new ConfigParser(importer = importer)
- new Configuration(parser parse data)
- }
-
- def fromFile(filename: String, importer: Importer): Configuration = {
- load(importer.importFile(filename), importer)
- }
-
- def fromFile(path: String, filename: String): Configuration = {
- val importer = new FilesystemImporter(path)
- fromFile(filename, importer)
- }
-
- def fromFile(filename: String): Configuration = {
- val n = filename.lastIndexOf('/')
- if (n < 0) {
- fromFile(DefaultPath, filename)
- } else {
- fromFile(filename.substring(0, n), filename.substring(n + 1))
- }
- }
-
- def fromResource(filename: String): Configuration = {
- fromResource(filename, ClassLoader.getSystemClassLoader)
- }
-
- def fromResource(filename: String, classLoader: ClassLoader): Configuration = {
- val importer = new ResourceImporter(classLoader)
- fromFile(filename, importer)
- }
-
- def fromMap(map: Map[String, Any]) = {
- new Configuration(map)
- }
-
- def fromString(data: String): Configuration = {
- load(data)
- }
-}
-
-class Configuration(val map: Map[String, Any]) {
- private val trueValues = Set("true", "on")
- private val falseValues = Set("false", "off")
-
- def contains(key: String): Boolean = map contains key
-
- def keys: Iterable[String] = map.keys
-
- def getAny(key: String): Option[Any] = {
- try {
- Some(map(key))
- } catch {
- case _ => None
- }
- }
-
- def getAny(key: String, defaultValue: Any): Any = getAny(key).getOrElse(defaultValue)
-
- def getSeqAny(key: String): Seq[Any] = {
- try {
- map(key).asInstanceOf[Seq[Any]]
- } catch {
- case _ => Seq.empty[Any]
- }
- }
-
- def getString(key: String): Option[String] = map.get(key).map(_.toString)
-
- def getString(key: String, defaultValue: String): String = getString(key).getOrElse(defaultValue)
-
- def getList(key: String): Seq[String] = {
- try {
- map(key).asInstanceOf[Seq[String]]
- } catch {
- case _ => Seq.empty[String]
- }
- }
-
- def getInt(key: String): Option[Int] = {
- try {
- Some(map(key).toString.toInt)
- } catch {
- case _ => None
- }
- }
-
- def getInt(key: String, defaultValue: Int): Int = getInt(key).getOrElse(defaultValue)
-
- def getLong(key: String): Option[Long] = {
- try {
- Some(map(key).toString.toLong)
- } catch {
- case _ => None
- }
- }
-
- def getLong(key: String, defaultValue: Long): Long = getLong(key).getOrElse(defaultValue)
-
- def getFloat(key: String): Option[Float] = {
- try {
- Some(map(key).toString.toFloat)
- } catch {
- case _ => None
- }
- }
-
- def getFloat(key: String, defaultValue: Float): Float = getFloat(key).getOrElse(defaultValue)
-
- def getDouble(key: String): Option[Double] = {
- try {
- Some(map(key).toString.toDouble)
- } catch {
- case _ => None
- }
- }
-
- def getDouble(key: String, defaultValue: Double): Double = getDouble(key).getOrElse(defaultValue)
-
- def getBoolean(key: String): Option[Boolean] = {
- getString(key) flatMap { s =>
- val isTrue = trueValues.contains(s)
- if (!isTrue && !falseValues.contains(s)) None
- else Some(isTrue)
- }
- }
-
- def getBoolean(key: String, defaultValue: Boolean): Boolean = getBool(key).getOrElse(defaultValue)
-
- def getBool(key: String): Option[Boolean] = getBoolean(key)
-
- def getBool(key: String, defaultValue: Boolean): Boolean = getBoolean(key, defaultValue)
-
- def apply(key: String): String = getString(key) match {
- case None => throw new ConfigurationException("undefined config: " + key)
- case Some(v) => v
- }
-
- def apply(key: String, defaultValue: String) = getString(key, defaultValue)
- def apply(key: String, defaultValue: Int) = getInt(key, defaultValue)
- def apply(key: String, defaultValue: Long) = getLong(key, defaultValue)
- def apply(key: String, defaultValue: Boolean) = getBool(key, defaultValue)
-
- def getSection(name: String): Option[Configuration] = {
- val l = name.length + 1
- val m = map.collect { case (k, v) if k.startsWith(name) => (k.substring(l), v) }
- if (m.isEmpty) None
- else Some(new Configuration(m))
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/config/Configurator.scala b/test/disabled/presentation/akka/src/akka/config/Configurator.scala
deleted file mode 100644
index 2818339b0f..0000000000
--- a/test/disabled/presentation/akka/src/akka/config/Configurator.scala
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.config
-
-import akka.config.Supervision.{ SuperviseTypedActor, FaultHandlingStrategy }
-
-private[akka] trait TypedActorConfiguratorBase {
- def getExternalDependency[T](clazz: Class[T]): T
-
- def configure(restartStrategy: FaultHandlingStrategy, components: List[SuperviseTypedActor]): TypedActorConfiguratorBase
-
- def inject: TypedActorConfiguratorBase
-
- def supervise: TypedActorConfiguratorBase
-
- def reset
-
- def stop
-}
diff --git a/test/disabled/presentation/akka/src/akka/config/Importer.scala b/test/disabled/presentation/akka/src/akka/config/Importer.scala
deleted file mode 100644
index eebda1d4fe..0000000000
--- a/test/disabled/presentation/akka/src/akka/config/Importer.scala
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- *
- * Based on Configgy by Robey Pointer.
- * Copyright 2009 Robey Pointer <robeypointer@gmail.com>
- * http://www.apache.org/licenses/LICENSE-2.0
- */
-
-package akka.config
-
-import java.io.{ BufferedReader, File, FileInputStream, InputStream, InputStreamReader }
-
-/**
- * An interface for finding config files and reading them into strings for
- * parsing. This is used to handle `include` directives in config files.
- */
-trait Importer {
-
- def importFile(filename: String): String
-
- private val BUFFER_SIZE = 8192
-
- protected def streamToString(in: InputStream): String = {
- try {
- val reader = new BufferedReader(new InputStreamReader(in, "UTF-8"))
- val buffer = new Array[Char](BUFFER_SIZE)
- val sb = new StringBuilder
- var n = 0
- while (n >= 0) {
- n = reader.read(buffer, 0, buffer.length)
- if (n >= 0) {
- sb.appendAll(buffer, 0, n)
- }
- }
- in.close()
- sb.toString
- } catch {
- case x => throw new ConfigurationException(x.toString)
- }
- }
-}
-
-/**
- * An Importer that looks for imported config files in the filesystem.
- * This is the default importer.
- */
-class FilesystemImporter(val baseDir: String) extends Importer {
- def importFile(filename: String): String = {
- val f = new File(filename)
- val file = if (f.isAbsolute) f else new File(baseDir, filename)
- streamToString(new FileInputStream(file))
- }
-}
-
-/**
- * An Importer that looks for imported config files in the java resources
- * of the system class loader (usually the jar used to launch this app).
- */
-class ResourceImporter(classLoader: ClassLoader) extends Importer {
- def importFile(filename: String): String = {
- val stream = classLoader.getResourceAsStream(filename)
- streamToString(stream)
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/config/SupervisionConfig.scala b/test/disabled/presentation/akka/src/akka/config/SupervisionConfig.scala
deleted file mode 100644
index 40f61f615f..0000000000
--- a/test/disabled/presentation/akka/src/akka/config/SupervisionConfig.scala
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.config
-
-import akka.dispatch.MessageDispatcher
-import akka.actor.{ MaximumNumberOfRestartsWithinTimeRangeReached, ActorRef }
-import akka.japi.{ Procedure2, Procedure }
-
-case class RemoteAddress(val hostname: String, val port: Int)
-
-/**
- * Configuration classes - not to be used as messages.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-object Supervision {
- sealed abstract class ConfigElement
-
- abstract class Server extends ConfigElement
- sealed abstract class LifeCycle extends ConfigElement
- sealed abstract class FaultHandlingStrategy(val trapExit: List[Class[_ <: Throwable]]) extends ConfigElement
-
- case class SupervisorConfig(restartStrategy: FaultHandlingStrategy, worker: List[Server], maxRestartsHandler: (ActorRef, MaximumNumberOfRestartsWithinTimeRangeReached) => Unit = { (aRef, max) => () }) extends Server {
- //Java API
- def this(restartStrategy: FaultHandlingStrategy, worker: Array[Server]) = this(restartStrategy, worker.toList)
- def this(restartStrategy: FaultHandlingStrategy, worker: Array[Server], restartHandler: Procedure2[ActorRef, MaximumNumberOfRestartsWithinTimeRangeReached]) = this(restartStrategy, worker.toList, { (aRef, max) => restartHandler.apply(aRef, max) })
- }
-
- class Supervise(val actorRef: ActorRef, val lifeCycle: LifeCycle, val registerAsRemoteService: Boolean = false) extends Server {
- //Java API
- def this(actorRef: ActorRef, lifeCycle: LifeCycle) =
- this(actorRef, lifeCycle, false)
- }
-
- object Supervise {
- def apply(actorRef: ActorRef, lifeCycle: LifeCycle, registerAsRemoteService: Boolean = false) = new Supervise(actorRef, lifeCycle, registerAsRemoteService)
- def apply(actorRef: ActorRef, lifeCycle: LifeCycle) = new Supervise(actorRef, lifeCycle, false)
- def unapply(supervise: Supervise) = Some((supervise.actorRef, supervise.lifeCycle, supervise.registerAsRemoteService))
- }
-
- object AllForOneStrategy {
- def apply(trapExit: List[Class[_ <: Throwable]], maxNrOfRetries: Int, withinTimeRange: Int): AllForOneStrategy =
- new AllForOneStrategy(trapExit,
- if (maxNrOfRetries < 0) None else Some(maxNrOfRetries), if (withinTimeRange < 0) None else Some(withinTimeRange))
- }
-
- case class AllForOneStrategy(override val trapExit: List[Class[_ <: Throwable]],
- maxNrOfRetries: Option[Int] = None,
- withinTimeRange: Option[Int] = None) extends FaultHandlingStrategy(trapExit) {
- def this(trapExit: List[Class[_ <: Throwable]], maxNrOfRetries: Int, withinTimeRange: Int) =
- this(trapExit,
- if (maxNrOfRetries < 0) None else Some(maxNrOfRetries), if (withinTimeRange < 0) None else Some(withinTimeRange))
-
- def this(trapExit: Array[Class[_ <: Throwable]], maxNrOfRetries: Int, withinTimeRange: Int) =
- this(trapExit.toList,
- if (maxNrOfRetries < 0) None else Some(maxNrOfRetries), if (withinTimeRange < 0) None else Some(withinTimeRange))
-
- def this(trapExit: java.util.List[Class[_ <: Throwable]], maxNrOfRetries: Int, withinTimeRange: Int) =
- this(trapExit.toArray.toList.asInstanceOf[List[Class[_ <: Throwable]]],
- if (maxNrOfRetries < 0) None else Some(maxNrOfRetries), if (withinTimeRange < 0) None else Some(withinTimeRange))
- }
-
- object OneForOneStrategy {
- def apply(trapExit: List[Class[_ <: Throwable]], maxNrOfRetries: Int, withinTimeRange: Int): OneForOneStrategy =
- new OneForOneStrategy(trapExit,
- if (maxNrOfRetries < 0) None else Some(maxNrOfRetries), if (withinTimeRange < 0) None else Some(withinTimeRange))
- }
-
- case class OneForOneStrategy(override val trapExit: List[Class[_ <: Throwable]],
- maxNrOfRetries: Option[Int] = None,
- withinTimeRange: Option[Int] = None) extends FaultHandlingStrategy(trapExit) {
- def this(trapExit: List[Class[_ <: Throwable]], maxNrOfRetries: Int, withinTimeRange: Int) =
- this(trapExit,
- if (maxNrOfRetries < 0) None else Some(maxNrOfRetries), if (withinTimeRange < 0) None else Some(withinTimeRange))
-
- def this(trapExit: Array[Class[_ <: Throwable]], maxNrOfRetries: Int, withinTimeRange: Int) =
- this(trapExit.toList,
- if (maxNrOfRetries < 0) None else Some(maxNrOfRetries), if (withinTimeRange < 0) None else Some(withinTimeRange))
-
- def this(trapExit: java.util.List[Class[_ <: Throwable]], maxNrOfRetries: Int, withinTimeRange: Int) =
- this(trapExit.toArray.toList.asInstanceOf[List[Class[_ <: Throwable]]],
- if (maxNrOfRetries < 0) None else Some(maxNrOfRetries), if (withinTimeRange < 0) None else Some(withinTimeRange))
- }
-
- case object NoFaultHandlingStrategy extends FaultHandlingStrategy(Nil)
-
- //Scala API
- case object Permanent extends LifeCycle
- case object Temporary extends LifeCycle
- case object UndefinedLifeCycle extends LifeCycle
-
- //Java API (& Scala if you fancy)
- def permanent(): LifeCycle = Permanent
- def temporary(): LifeCycle = Temporary
- def undefinedLifeCycle(): LifeCycle = UndefinedLifeCycle
-
- //Java API
- def noFaultHandlingStrategy = NoFaultHandlingStrategy
-
- case class SuperviseTypedActor(_intf: Class[_],
- val target: Class[_],
- val lifeCycle: LifeCycle,
- val timeout: Long,
- _dispatcher: MessageDispatcher, // optional
- _remoteAddress: RemoteAddress // optional
- ) extends Server {
- val intf: Option[Class[_]] = Option(_intf)
- val dispatcher: Option[MessageDispatcher] = Option(_dispatcher)
- val remoteAddress: Option[RemoteAddress] = Option(_remoteAddress)
-
- def this(target: Class[_], lifeCycle: LifeCycle, timeout: Long) =
- this(null: Class[_], target, lifeCycle, timeout, null: MessageDispatcher, null: RemoteAddress)
-
- def this(intf: Class[_], target: Class[_], lifeCycle: LifeCycle, timeout: Long) =
- this(intf, target, lifeCycle, timeout, null: MessageDispatcher, null: RemoteAddress)
-
- def this(intf: Class[_], target: Class[_], lifeCycle: LifeCycle, timeout: Long, dispatcher: MessageDispatcher) =
- this(intf, target, lifeCycle, timeout, dispatcher, null: RemoteAddress)
-
- def this(target: Class[_], lifeCycle: LifeCycle, timeout: Long, dispatcher: MessageDispatcher) =
- this(null: Class[_], target, lifeCycle, timeout, dispatcher, null: RemoteAddress)
-
- def this(intf: Class[_], target: Class[_], lifeCycle: LifeCycle, timeout: Long, remoteAddress: RemoteAddress) =
- this(intf, target, lifeCycle, timeout, null: MessageDispatcher, remoteAddress)
-
- def this(target: Class[_], lifeCycle: LifeCycle, timeout: Long, remoteAddress: RemoteAddress) =
- this(null: Class[_], target, lifeCycle, timeout, null: MessageDispatcher, remoteAddress)
-
- def this(target: Class[_], lifeCycle: LifeCycle, timeout: Long, dispatcher: MessageDispatcher, remoteAddress: RemoteAddress) =
- this(null: Class[_], target, lifeCycle, timeout, dispatcher, remoteAddress)
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/dataflow/DataFlow.scala b/test/disabled/presentation/akka/src/akka/dataflow/DataFlow.scala
deleted file mode 100644
index bca7936116..0000000000
--- a/test/disabled/presentation/akka/src/akka/dataflow/DataFlow.scala
+++ /dev/null
@@ -1,165 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.dataflow
-
-import java.util.concurrent.atomic.AtomicReference
-import java.util.concurrent.{ ConcurrentLinkedQueue, LinkedBlockingQueue }
-
-import akka.event.EventHandler
-import akka.actor.{ Actor, ActorRef }
-import akka.actor.Actor._
-import akka.dispatch.CompletableFuture
-import akka.AkkaException
-import akka.japi.{ Function, Effect }
-
-/**
- * Implements Oz-style dataflow (single assignment) variables.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-object DataFlow {
- object Start
- object Exit
-
- class DataFlowVariableException(message: String, cause: Throwable = null) extends AkkaException(message, cause)
-
- /**
- * Executes the supplied thunk in another thread.
- */
- def thread(body: => Unit): Unit = spawn(body)
-
- /**
- * JavaAPI.
- * Executes the supplied Effect in another thread.
- */
- def thread(body: Effect): Unit = spawn(body.apply)
-
- /**
- * Executes the supplied function in another thread.
- */
- def thread[A <: AnyRef, R <: AnyRef](body: A => R) =
- actorOf(new ReactiveEventBasedThread(body)).start()
-
- /**
- * JavaAPI.
- * Executes the supplied Function in another thread.
- */
- def thread[A <: AnyRef, R <: AnyRef](body: Function[A, R]) =
- actorOf(new ReactiveEventBasedThread(body.apply)).start()
-
- private class ReactiveEventBasedThread[A <: AnyRef, T <: AnyRef](body: A => T)
- extends Actor {
- def receive = {
- case Exit => self.stop()
- case message => self.reply(body(message.asInstanceOf[A]))
- }
- }
-
- private object DataFlowVariable {
- private sealed abstract class DataFlowVariableMessage
- private case class Set[T <: Any](value: T) extends DataFlowVariableMessage
- private object Get extends DataFlowVariableMessage
- }
-
- /**
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
- @deprecated("Superceeded by Future and CompletableFuture as of 1.1", "1.1")
- sealed class DataFlowVariable[T <: Any](timeoutMs: Long) {
- import DataFlowVariable._
-
- def this() = this(1000 * 60)
-
- private val value = new AtomicReference[Option[T]](None)
- private val blockedReaders = new ConcurrentLinkedQueue[ActorRef]
-
- private class In[T <: Any](dataFlow: DataFlowVariable[T]) extends Actor {
- self.timeout = timeoutMs
- def receive = {
- case s@Set(v) =>
- if (dataFlow.value.compareAndSet(None, Some(v.asInstanceOf[T]))) {
- while (dataFlow.blockedReaders.peek ne null)
- dataFlow.blockedReaders.poll ! s
- } else throw new DataFlowVariableException(
- "Attempt to change data flow variable (from [" + dataFlow.value.get + "] to [" + v + "])")
- case Exit => self.stop()
- }
- }
-
- private class Out[T <: Any](dataFlow: DataFlowVariable[T]) extends Actor {
- self.timeout = timeoutMs
- private var readerFuture: Option[CompletableFuture[Any]] = None
- def receive = {
- case Get => dataFlow.value.get match {
- case Some(value) => self reply value
- case None => readerFuture = self.senderFuture
- }
- case Set(v: T) => readerFuture.map(_ completeWithResult v)
- case Exit => self.stop()
- }
- }
-
- private[this] val in = actorOf(new In(this)).start()
-
- /**
- * Sets the value of this variable (if unset) with the value of the supplied variable.
- */
- def <<(ref: DataFlowVariable[T]) {
- if (this.value.get.isEmpty) in ! Set(ref())
- else throw new DataFlowVariableException(
- "Attempt to change data flow variable (from [" + this.value.get + "] to [" + ref() + "])")
- }
-
- /**
- * JavaAPI.
- * Sets the value of this variable (if unset) with the value of the supplied variable.
- */
- def set(ref: DataFlowVariable[T]) { this << ref }
-
- /**
- * Sets the value of this variable (if unset).
- */
- def <<(value: T) {
- if (this.value.get.isEmpty) in ! Set(value)
- else throw new DataFlowVariableException(
- "Attempt to change data flow variable (from [" + this.value.get + "] to [" + value + "])")
- }
-
- /**
- * JavaAPI.
- * Sets the value of this variable (if unset) with the value of the supplied variable.
- */
- def set(value: T) { this << value }
-
- /**
- * Retrieves the value of variable, throws a DataFlowVariableException if it times out.
- */
- def get(): T = this()
-
- /**
- * Retrieves the value of variable, throws a DataFlowVariableException if it times out.
- */
- def apply(): T = {
- value.get getOrElse {
- val out = actorOf(new Out(this)).start()
-
- val result = try {
- blockedReaders offer out
- (out !! Get).as[T]
- } catch {
- case e: Exception =>
- EventHandler.error(e, this, e.getMessage)
- out ! Exit
- throw e
- }
-
- result.getOrElse(throw new DataFlowVariableException(
- "Timed out (after " + timeoutMs + " milliseconds) while waiting for result"))
- }
- }
-
- def shutdown() { in ! Exit }
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/dispatch/Dispatchers.scala b/test/disabled/presentation/akka/src/akka/dispatch/Dispatchers.scala
deleted file mode 100644
index a567d0bcb0..0000000000
--- a/test/disabled/presentation/akka/src/akka/dispatch/Dispatchers.scala
+++ /dev/null
@@ -1,227 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.dispatch
-
-import akka.actor.{ Actor, ActorRef }
-import akka.actor.newUuid
-import akka.config.Config._
-import akka.util.{ Duration, ReflectiveAccess }
-
-import akka.config.Configuration
-
-import java.util.concurrent.TimeUnit
-
-/**
- * Scala API. Dispatcher factory.
- * <p/>
- * Example usage:
- * <pre/>
- * val dispatcher = Dispatchers.newExecutorBasedEventDrivenDispatcher("name")
- * dispatcher
- * .withNewThreadPoolWithLinkedBlockingQueueWithCapacity(100)
- * .setCorePoolSize(16)
- * .setMaxPoolSize(128)
- * .setKeepAliveTimeInMillis(60000)
- * .setRejectionPolicy(new CallerRunsPolicy)
- * .build
- * </pre>
- * <p/>
- * Java API. Dispatcher factory.
- * <p/>
- * Example usage:
- * <pre/>
- * MessageDispatcher dispatcher = Dispatchers.newExecutorBasedEventDrivenDispatcher("name");
- * dispatcher
- * .withNewThreadPoolWithLinkedBlockingQueueWithCapacity(100)
- * .setCorePoolSize(16)
- * .setMaxPoolSize(128)
- * .setKeepAliveTimeInMillis(60000)
- * .setRejectionPolicy(new CallerRunsPolicy())
- * .build();
- * </pre>
- * <p/>
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-object Dispatchers {
- val THROUGHPUT = config.getInt("akka.actor.throughput", 5)
- val DEFAULT_SHUTDOWN_TIMEOUT = config.getLong("akka.actor.dispatcher-shutdown-timeout").
- map(time => Duration(time, TIME_UNIT)).
- getOrElse(Duration(1000, TimeUnit.MILLISECONDS))
- val MAILBOX_CAPACITY = config.getInt("akka.actor.default-dispatcher.mailbox-capacity", -1)
- val MAILBOX_PUSH_TIME_OUT = Duration(config.getInt("akka.actor.default-dispatcher.mailbox-push-timeout-time", 10), TIME_UNIT)
- val THROUGHPUT_DEADLINE_TIME = Duration(config.getInt("akka.actor.throughput-deadline-time", -1), TIME_UNIT)
- val THROUGHPUT_DEADLINE_TIME_MILLIS = THROUGHPUT_DEADLINE_TIME.toMillis.toInt
- val MAILBOX_TYPE: MailboxType = if (MAILBOX_CAPACITY < 1) UnboundedMailbox() else BoundedMailbox()
-
- lazy val defaultGlobalDispatcher = {
- config.getSection("akka.actor.default-dispatcher").flatMap(from).getOrElse(globalExecutorBasedEventDrivenDispatcher)
- }
-
- object globalExecutorBasedEventDrivenDispatcher extends ExecutorBasedEventDrivenDispatcher("global", THROUGHPUT, THROUGHPUT_DEADLINE_TIME_MILLIS, MAILBOX_TYPE)
-
- /**
- * Creates an thread based dispatcher serving a single actor through the same single thread.
- * Uses the default timeout
- * <p/>
- * E.g. each actor consumes its own thread.
- */
- def newThreadBasedDispatcher(actor: ActorRef) = new ThreadBasedDispatcher(actor)
-
- /**
- * Creates an thread based dispatcher serving a single actor through the same single thread.
- * Uses the default timeout
- * If capacity is negative, it's Integer.MAX_VALUE
- * <p/>
- * E.g. each actor consumes its own thread.
- */
- def newThreadBasedDispatcher(actor: ActorRef, mailboxCapacity: Int) = new ThreadBasedDispatcher(actor, mailboxCapacity)
-
- /**
- * Creates an thread based dispatcher serving a single actor through the same single thread.
- * If capacity is negative, it's Integer.MAX_VALUE
- * <p/>
- * E.g. each actor consumes its own thread.
- */
- def newThreadBasedDispatcher(actor: ActorRef, mailboxCapacity: Int, pushTimeOut: Duration) =
- new ThreadBasedDispatcher(actor, mailboxCapacity, pushTimeOut)
-
- /**
- * Creates an executor-based event-driven dispatcher serving multiple (millions) of actors through a thread pool.
- * <p/>
- * Has a fluent builder interface for configuring its semantics.
- */
- def newExecutorBasedEventDrivenDispatcher(name: String) =
- ThreadPoolConfigDispatcherBuilder(config => new ExecutorBasedEventDrivenDispatcher(name, config), ThreadPoolConfig())
-
- /**
- * Creates an executor-based event-driven dispatcher serving multiple (millions) of actors through a thread pool.
- * <p/>
- * Has a fluent builder interface for configuring its semantics.
- */
- def newExecutorBasedEventDrivenDispatcher(name: String, throughput: Int, mailboxType: MailboxType) =
- ThreadPoolConfigDispatcherBuilder(config =>
- new ExecutorBasedEventDrivenDispatcher(name, throughput, THROUGHPUT_DEADLINE_TIME_MILLIS, mailboxType, config), ThreadPoolConfig())
-
- /**
- * Creates an executor-based event-driven dispatcher serving multiple (millions) of actors through a thread pool.
- * <p/>
- * Has a fluent builder interface for configuring its semantics.
- */
- def newExecutorBasedEventDrivenDispatcher(name: String, throughput: Int, throughputDeadlineMs: Int, mailboxType: MailboxType) =
- ThreadPoolConfigDispatcherBuilder(config =>
- new ExecutorBasedEventDrivenDispatcher(name, throughput, throughputDeadlineMs, mailboxType, config), ThreadPoolConfig())
-
- /**
- * Creates an executor-based event-driven dispatcher, with work-stealing, serving multiple (millions) of actors through a thread pool.
- * <p/>
- * Has a fluent builder interface for configuring its semantics.
- */
- def newExecutorBasedEventDrivenWorkStealingDispatcher(name: String) =
- ThreadPoolConfigDispatcherBuilder(config => new ExecutorBasedEventDrivenWorkStealingDispatcher(name, config), ThreadPoolConfig())
-
- /**
- * Creates an executor-based event-driven dispatcher, with work-stealing, serving multiple (millions) of actors through a thread pool.
- * <p/>
- * Has a fluent builder interface for configuring its semantics.
- */
- def newExecutorBasedEventDrivenWorkStealingDispatcher(name: String, throughput: Int) =
- ThreadPoolConfigDispatcherBuilder(config =>
- new ExecutorBasedEventDrivenWorkStealingDispatcher(name, throughput, THROUGHPUT_DEADLINE_TIME_MILLIS, MAILBOX_TYPE, config), ThreadPoolConfig())
-
- /**
- * Creates an executor-based event-driven dispatcher, with work-stealing, serving multiple (millions) of actors through a thread pool.
- * <p/>
- * Has a fluent builder interface for configuring its semantics.
- */
- def newExecutorBasedEventDrivenWorkStealingDispatcher(name: String, throughput: Int, mailboxType: MailboxType) =
- ThreadPoolConfigDispatcherBuilder(config =>
- new ExecutorBasedEventDrivenWorkStealingDispatcher(name, throughput, THROUGHPUT_DEADLINE_TIME_MILLIS, mailboxType, config), ThreadPoolConfig())
-
- /**
- * Creates an executor-based event-driven dispatcher, with work-stealing, serving multiple (millions) of actors through a thread pool.
- * <p/>
- * Has a fluent builder interface for configuring its semantics.
- */
- def newExecutorBasedEventDrivenWorkStealingDispatcher(name: String, throughput: Int, throughputDeadlineMs: Int, mailboxType: MailboxType) =
- ThreadPoolConfigDispatcherBuilder(config =>
- new ExecutorBasedEventDrivenWorkStealingDispatcher(name, throughput, throughputDeadlineMs, mailboxType, config), ThreadPoolConfig())
- /**
- * Utility function that tries to load the specified dispatcher config from the akka.conf
- * or else use the supplied default dispatcher
- */
- def fromConfig(key: String, default: => MessageDispatcher = defaultGlobalDispatcher): MessageDispatcher =
- config getSection key flatMap from getOrElse default
-
- /*
- * Creates of obtains a dispatcher from a ConfigMap according to the format below
- *
- * default-dispatcher {
- * type = "GlobalExecutorBasedEventDriven" # Must be one of the following, all "Global*" are non-configurable
- * # (ExecutorBasedEventDrivenWorkStealing), ExecutorBasedEventDriven,
- * # GlobalExecutorBasedEventDriven
- * # A FQCN to a class inheriting MessageDispatcherConfigurator with a no-arg visible constructor
- * keep-alive-time = 60 # Keep alive time for threads
- * core-pool-size-factor = 1.0 # No of core threads ... ceil(available processors * factor)
- * max-pool-size-factor = 4.0 # Max no of threads ... ceil(available processors * factor)
- * executor-bounds = -1 # Makes the Executor bounded, -1 is unbounded
- * allow-core-timeout = on # Allow core threads to time out
- * rejection-policy = "caller-runs" # abort, caller-runs, discard-oldest, discard
- * throughput = 5 # Throughput for ExecutorBasedEventDrivenDispatcher
- * }
- * ex: from(config.getConfigMap(identifier).get)
- *
- * Gotcha: Only configures the dispatcher if possible
- * Returns: None if "type" isn't specified in the config
- * Throws: IllegalArgumentException if the value of "type" is not valid
- * IllegalArgumentException if it cannot
- */
- def from(cfg: Configuration): Option[MessageDispatcher] = {
- cfg.getString("type") map {
- case "ExecutorBasedEventDriven" => new ExecutorBasedEventDrivenDispatcherConfigurator()
- case "ExecutorBasedEventDrivenWorkStealing" => new ExecutorBasedEventDrivenWorkStealingDispatcherConfigurator()
- case "GlobalExecutorBasedEventDriven" => GlobalExecutorBasedEventDrivenDispatcherConfigurator
- case fqn =>
- ReflectiveAccess.getClassFor[MessageDispatcherConfigurator](fqn) match {
- case r: Right[_, Class[MessageDispatcherConfigurator]] =>
- ReflectiveAccess.createInstance[MessageDispatcherConfigurator](r.b, Array[Class[_]](), Array[AnyRef]()) match {
- case r: Right[Exception, MessageDispatcherConfigurator] => r.b
- case l: Left[Exception, MessageDispatcherConfigurator] =>
- throw new IllegalArgumentException("Cannot instantiate MessageDispatcherConfigurator type [%s], make sure it has a default no-args constructor" format fqn, l.a)
- }
- case l: Left[Exception, _] =>
- throw new IllegalArgumentException("Unknown MessageDispatcherConfigurator type [%s]" format fqn, l.a)
- }
- } map {
- _ configure cfg
- }
- }
-}
-
-object GlobalExecutorBasedEventDrivenDispatcherConfigurator extends MessageDispatcherConfigurator {
- def configure(config: Configuration): MessageDispatcher = Dispatchers.globalExecutorBasedEventDrivenDispatcher
-}
-
-class ExecutorBasedEventDrivenDispatcherConfigurator extends MessageDispatcherConfigurator {
- def configure(config: Configuration): MessageDispatcher = {
- configureThreadPool(config, threadPoolConfig => new ExecutorBasedEventDrivenDispatcher(
- config.getString("name", newUuid.toString),
- config.getInt("throughput", Dispatchers.THROUGHPUT),
- config.getInt("throughput-deadline-time", Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS),
- mailboxType(config),
- threadPoolConfig)).build
- }
-}
-
-class ExecutorBasedEventDrivenWorkStealingDispatcherConfigurator extends MessageDispatcherConfigurator {
- def configure(config: Configuration): MessageDispatcher = {
- configureThreadPool(config, threadPoolConfig => new ExecutorBasedEventDrivenWorkStealingDispatcher(
- config.getString("name", newUuid.toString),
- config.getInt("throughput", Dispatchers.THROUGHPUT),
- config.getInt("throughput-deadline-time", Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS),
- mailboxType(config),
- threadPoolConfig)).build
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenDispatcher.scala b/test/disabled/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenDispatcher.scala
deleted file mode 100644
index bc3f29ac68..0000000000
--- a/test/disabled/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenDispatcher.scala
+++ /dev/null
@@ -1,305 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.dispatch
-
-import akka.event.EventHandler
-import akka.actor.{ ActorRef, IllegalActorStateException }
-import akka.util.{ ReflectiveAccess, Switch }
-
-import java.util.Queue
-import java.util.concurrent.atomic.AtomicReference
-import java.util.concurrent.{ TimeUnit, ExecutorService, RejectedExecutionException, ConcurrentLinkedQueue, LinkedBlockingQueue }
-
-/**
- * Default settings are:
- * <pre/>
- * - withNewThreadPoolWithLinkedBlockingQueueWithUnboundedCapacity
- * - NR_START_THREADS = 16
- * - NR_MAX_THREADS = 128
- * - KEEP_ALIVE_TIME = 60000L // one minute
- * </pre>
- * <p/>
- *
- * The dispatcher has a fluent builder interface to build up a thread pool to suite your use-case.
- * There is a default thread pool defined but make use of the builder if you need it. Here are some examples.
- * <p/>
- *
- * Scala API.
- * <p/>
- * Example usage:
- * <pre/>
- * val dispatcher = new ExecutorBasedEventDrivenDispatcher("name")
- * dispatcher
- * .withNewThreadPoolWithBoundedBlockingQueue(100)
- * .setCorePoolSize(16)
- * .setMaxPoolSize(128)
- * .setKeepAliveTimeInMillis(60000)
- * .setRejectionPolicy(new CallerRunsPolicy)
- * .buildThreadPool
- * </pre>
- * <p/>
- *
- * Java API.
- * <p/>
- * Example usage:
- * <pre/>
- * ExecutorBasedEventDrivenDispatcher dispatcher = new ExecutorBasedEventDrivenDispatcher("name");
- * dispatcher
- * .withNewThreadPoolWithBoundedBlockingQueue(100)
- * .setCorePoolSize(16)
- * .setMaxPoolSize(128)
- * .setKeepAliveTimeInMillis(60000)
- * .setRejectionPolicy(new CallerRunsPolicy())
- * .buildThreadPool();
- * </pre>
- * <p/>
- *
- * But the preferred way of creating dispatchers is to use
- * the {@link akka.dispatch.Dispatchers} factory object.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- * @param throughput positive integer indicates the dispatcher will only process so much messages at a time from the
- * mailbox, without checking the mailboxes of other actors. Zero or negative means the dispatcher
- * always continues until the mailbox is empty.
- * Larger values (or zero or negative) increase throughput, smaller values increase fairness
- */
-class ExecutorBasedEventDrivenDispatcher(
- _name: String,
- val throughput: Int = Dispatchers.THROUGHPUT,
- val throughputDeadlineTime: Int = Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS,
- val mailboxType: MailboxType = Dispatchers.MAILBOX_TYPE,
- val config: ThreadPoolConfig = ThreadPoolConfig())
- extends MessageDispatcher {
-
- def this(_name: String, throughput: Int, throughputDeadlineTime: Int, mailboxType: MailboxType) =
- this(_name, throughput, throughputDeadlineTime, mailboxType, ThreadPoolConfig()) // Needed for Java API usage
-
- def this(_name: String, throughput: Int, mailboxType: MailboxType) =
- this(_name, throughput, Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS, mailboxType) // Needed for Java API usage
-
- def this(_name: String, throughput: Int) =
- this(_name, throughput, Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS, Dispatchers.MAILBOX_TYPE) // Needed for Java API usage
-
- def this(_name: String, _config: ThreadPoolConfig) =
- this(_name, Dispatchers.THROUGHPUT, Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS, Dispatchers.MAILBOX_TYPE, _config)
-
- def this(_name: String) =
- this(_name, Dispatchers.THROUGHPUT, Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS, Dispatchers.MAILBOX_TYPE) // Needed for Java API usage
-
- val name = "akka:event-driven:dispatcher:" + _name
-
- private[akka] val threadFactory = new MonitorableThreadFactory(name)
- private[akka] val executorService = new AtomicReference[ExecutorService](config.createLazyExecutorService(threadFactory))
-
- private[akka] def dispatch(invocation: MessageInvocation) = {
- val mbox = getMailbox(invocation.receiver)
- mbox enqueue invocation
- registerForExecution(mbox)
- }
-
- private[akka] def executeFuture(invocation: FutureInvocation[_]): Unit = if (active.isOn) {
- try executorService.get() execute invocation
- catch {
- case e: RejectedExecutionException =>
- EventHandler.warning(this, e.toString)
- throw e
- }
- }
-
- /**
- * @return the mailbox associated with the actor
- */
- protected def getMailbox(receiver: ActorRef) = receiver.mailbox.asInstanceOf[MessageQueue with ExecutableMailbox]
-
- override def mailboxSize(actorRef: ActorRef) = getMailbox(actorRef).size
-
- def createMailbox(actorRef: ActorRef): AnyRef = mailboxType match {
- case b: UnboundedMailbox =>
- new ConcurrentLinkedQueue[MessageInvocation] with MessageQueue with ExecutableMailbox {
- @inline
- final def dispatcher = ExecutorBasedEventDrivenDispatcher.this
- @inline
- final def enqueue(m: MessageInvocation) = this.add(m)
- @inline
- final def dequeue(): MessageInvocation = this.poll()
- }
- case b: BoundedMailbox =>
- new DefaultBoundedMessageQueue(b.capacity, b.pushTimeOut) with ExecutableMailbox {
- @inline
- final def dispatcher = ExecutorBasedEventDrivenDispatcher.this
- }
- }
-
- private[akka] def start {}
-
- private[akka] def shutdown {
- val old = executorService.getAndSet(config.createLazyExecutorService(threadFactory))
- if (old ne null) {
- old.shutdownNow()
- }
- }
-
- private[akka] def registerForExecution(mbox: MessageQueue with ExecutableMailbox): Unit = {
- if (mbox.dispatcherLock.tryLock()) {
- if (active.isOn && !mbox.suspended.locked) { //If the dispatcher is active and the actor not suspended
- try {
- executorService.get() execute mbox
- } catch {
- case e: RejectedExecutionException =>
- EventHandler.warning(this, e.toString)
- mbox.dispatcherLock.unlock()
- throw e
- }
- } else {
- mbox.dispatcherLock.unlock() //If the dispatcher isn't active or if the actor is suspended, unlock the dispatcher lock
- }
- }
- }
-
- private[akka] def reRegisterForExecution(mbox: MessageQueue with ExecutableMailbox): Unit =
- registerForExecution(mbox)
-
- override val toString = getClass.getSimpleName + "[" + name + "]"
-
- def suspend(actorRef: ActorRef) {
- getMailbox(actorRef).suspended.tryLock
- }
-
- def resume(actorRef: ActorRef) {
- val mbox = getMailbox(actorRef)
- mbox.suspended.tryUnlock
- reRegisterForExecution(mbox)
- }
-}
-
-/**
- * This is the behavior of an ExecutorBasedEventDrivenDispatchers mailbox.
- */
-trait ExecutableMailbox extends Runnable { self: MessageQueue =>
-
- def dispatcher: ExecutorBasedEventDrivenDispatcher
-
- final def run = {
- try {
- processMailbox()
- } catch {
- case ie: InterruptedException =>
- }
- finally {
- dispatcherLock.unlock()
- }
- if (!self.isEmpty)
- dispatcher.reRegisterForExecution(this)
- }
-
- /**
- * Process the messages in the mailbox
- *
- * @return true if the processing finished before the mailbox was empty, due to the throughput constraint
- */
- final def processMailbox() {
- if (!self.suspended.locked) {
- var nextMessage = self.dequeue
- if (nextMessage ne null) { //If we have a message
- if (dispatcher.throughput <= 1) //If we only run one message per process
- nextMessage.invoke //Just run it
- else { //But otherwise, if we are throttled, we need to do some book-keeping
- var processedMessages = 0
- val isDeadlineEnabled = dispatcher.throughputDeadlineTime > 0
- val deadlineNs = if (isDeadlineEnabled) System.nanoTime + TimeUnit.MILLISECONDS.toNanos(dispatcher.throughputDeadlineTime)
- else 0
- do {
- nextMessage.invoke
- nextMessage =
- if (self.suspended.locked) {
- null // If we are suspended, abort
- } else { // If we aren't suspended, we need to make sure we're not overstepping our boundaries
- processedMessages += 1
- if ((processedMessages >= dispatcher.throughput) || (isDeadlineEnabled && System.nanoTime >= deadlineNs)) // If we're throttled, break out
- null //We reached our boundaries, abort
- else self.dequeue //Dequeue the next message
- }
- } while (nextMessage ne null)
- }
- }
- }
- }
-}
-
-object PriorityGenerator {
- /**
- * Creates a PriorityGenerator that uses the supplied function as priority generator
- */
- def apply(priorityFunction: Any => Int): PriorityGenerator = new PriorityGenerator {
- def gen(message: Any): Int = priorityFunction(message)
- }
-}
-
-/**
- * A PriorityGenerator is a convenience API to create a Comparator that orders the messages of a
- * PriorityExecutorBasedEventDrivenDispatcher
- */
-abstract class PriorityGenerator extends java.util.Comparator[MessageInvocation] {
- def gen(message: Any): Int
-
- final def compare(thisMessage: MessageInvocation, thatMessage: MessageInvocation): Int =
- gen(thisMessage.message) - gen(thatMessage.message)
-}
-
-/**
- * A version of ExecutorBasedEventDrivenDispatcher that gives all actors registered to it a priority mailbox,
- * prioritized according to the supplied comparator.
- *
- * The dispatcher will process the messages with the _lowest_ priority first.
- */
-class PriorityExecutorBasedEventDrivenDispatcher(
- name: String,
- val comparator: java.util.Comparator[MessageInvocation],
- throughput: Int = Dispatchers.THROUGHPUT,
- throughputDeadlineTime: Int = Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS,
- mailboxType: MailboxType = Dispatchers.MAILBOX_TYPE,
- config: ThreadPoolConfig = ThreadPoolConfig()) extends ExecutorBasedEventDrivenDispatcher(name, throughput, throughputDeadlineTime, mailboxType, config) with PriorityMailbox {
-
- def this(name: String, comparator: java.util.Comparator[MessageInvocation], throughput: Int, throughputDeadlineTime: Int, mailboxType: MailboxType) =
- this(name, comparator, throughput, throughputDeadlineTime, mailboxType, ThreadPoolConfig()) // Needed for Java API usage
-
- def this(name: String, comparator: java.util.Comparator[MessageInvocation], throughput: Int, mailboxType: MailboxType) =
- this(name, comparator, throughput, Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS, mailboxType) // Needed for Java API usage
-
- def this(name: String, comparator: java.util.Comparator[MessageInvocation], throughput: Int) =
- this(name, comparator, throughput, Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS, Dispatchers.MAILBOX_TYPE) // Needed for Java API usage
-
- def this(name: String, comparator: java.util.Comparator[MessageInvocation], config: ThreadPoolConfig) =
- this(name, comparator, Dispatchers.THROUGHPUT, Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS, Dispatchers.MAILBOX_TYPE, config)
-
- def this(name: String, comparator: java.util.Comparator[MessageInvocation]) =
- this(name, comparator, Dispatchers.THROUGHPUT, Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS, Dispatchers.MAILBOX_TYPE) // Needed for Java API usage
-}
-
-/**
- * Can be used to give an ExecutorBasedEventDrivenDispatcher's actors priority-enabled mailboxes
- *
- * Usage:
- * new ExecutorBasedEventDrivenDispatcher(...) with PriorityMailbox {
- * val comparator = ...comparator that determines mailbox priority ordering...
- * }
- */
-trait PriorityMailbox { self: ExecutorBasedEventDrivenDispatcher =>
- def comparator: java.util.Comparator[MessageInvocation]
-
- override def createMailbox(actorRef: ActorRef): AnyRef = self.mailboxType match {
- case b: UnboundedMailbox =>
- new UnboundedPriorityMessageQueue(comparator) with ExecutableMailbox {
- @inline
- final def dispatcher = self
- }
-
- case b: BoundedMailbox =>
- new BoundedPriorityMessageQueue(b.capacity, b.pushTimeOut, comparator) with ExecutableMailbox {
- @inline
- final def dispatcher = self
- }
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcher.scala b/test/disabled/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcher.scala
deleted file mode 100644
index 4cba8eec8b..0000000000
--- a/test/disabled/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcher.scala
+++ /dev/null
@@ -1,165 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.dispatch
-
-import akka.actor.{ ActorRef, Actor, IllegalActorStateException }
-import akka.util.{ ReflectiveAccess, Switch }
-
-import java.util.Queue
-import java.util.concurrent.atomic.{ AtomicReference, AtomicInteger }
-import java.util.concurrent.{ TimeUnit, ExecutorService, RejectedExecutionException, ConcurrentLinkedQueue, LinkedBlockingQueue }
-import util.DynamicVariable
-
-/**
- * An executor based event driven dispatcher which will try to redistribute work from busy actors to idle actors. It is assumed
- * that all actors using the same instance of this dispatcher can process all messages that have been sent to one of the actors. I.e. the
- * actors belong to a pool of actors, and to the client there is no guarantee about which actor instance actually processes a given message.
- * <p/>
- * Although the technique used in this implementation is commonly known as "work stealing", the actual implementation is probably
- * best described as "work donating" because the actor of which work is being stolen takes the initiative.
- * <p/>
- * The preferred way of creating dispatchers is to use
- * the {@link akka.dispatch.Dispatchers} factory object.
- *
- * @see akka.dispatch.ExecutorBasedEventDrivenWorkStealingDispatcher
- * @see akka.dispatch.Dispatchers
- *
- * @author Viktor Klang
- */
-class ExecutorBasedEventDrivenWorkStealingDispatcher(
- _name: String,
- throughput: Int = Dispatchers.THROUGHPUT,
- throughputDeadlineTime: Int = Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS,
- mailboxType: MailboxType = Dispatchers.MAILBOX_TYPE,
- config: ThreadPoolConfig = ThreadPoolConfig())
- extends ExecutorBasedEventDrivenDispatcher(_name, throughput, throughputDeadlineTime, mailboxType, config) {
-
- def this(_name: String, throughput: Int, throughputDeadlineTime: Int, mailboxType: MailboxType) =
- this(_name, throughput, throughputDeadlineTime, mailboxType, ThreadPoolConfig()) // Needed for Java API usage
-
- def this(_name: String, throughput: Int, mailboxType: MailboxType) =
- this(_name, throughput, Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS, mailboxType) // Needed for Java API usage
-
- def this(_name: String, throughput: Int) =
- this(_name, throughput, Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS, Dispatchers.MAILBOX_TYPE) // Needed for Java API usage
-
- def this(_name: String, _config: ThreadPoolConfig) =
- this(_name, Dispatchers.THROUGHPUT, Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS, Dispatchers.MAILBOX_TYPE, _config)
-
- def this(_name: String, memberType: Class[_ <: Actor]) =
- this(_name, Dispatchers.THROUGHPUT, Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS, Dispatchers.MAILBOX_TYPE) // Needed for Java API usage
-
- def this(_name: String, mailboxType: MailboxType) =
- this(_name, Dispatchers.THROUGHPUT, Dispatchers.THROUGHPUT_DEADLINE_TIME_MILLIS, mailboxType) // Needed for Java API usage
-
- @volatile
- private var actorType: Option[Class[_]] = None
- @volatile
- private var members = Vector[ActorRef]()
- private val donationInProgress = new DynamicVariable(false)
-
- private[akka] override def register(actorRef: ActorRef) = {
- //Verify actor type conformity
- actorType match {
- case None => actorType = Some(actorRef.actor.getClass)
- case Some(aType) =>
- if (aType != actorRef.actor.getClass)
- throw new IllegalActorStateException(String.format(
- "Can't register actor %s in a work stealing dispatcher which already knows actors of type %s",
- actorRef, aType))
- }
-
- synchronized { members :+= actorRef } //Update members
- super.register(actorRef)
- }
-
- private[akka] override def unregister(actorRef: ActorRef) = {
- synchronized { members = members.filterNot(actorRef eq) } //Update members
- super.unregister(actorRef)
- }
-
- override private[akka] def dispatch(invocation: MessageInvocation) = {
- val mbox = getMailbox(invocation.receiver)
- if (donationInProgress.value == false && (!mbox.isEmpty || mbox.dispatcherLock.locked) && attemptDonationOf(invocation, mbox)) {
- //We were busy and we got to donate the message to some other lucky guy, we're done here
- } else {
- mbox enqueue invocation
- registerForExecution(mbox)
- }
- }
-
- override private[akka] def reRegisterForExecution(mbox: MessageQueue with ExecutableMailbox): Unit = {
- try {
- donationInProgress.value = true
- while (donateFrom(mbox)) {} //When we reregister, first donate messages to another actor
- } finally { donationInProgress.value = false }
-
- if (!mbox.isEmpty) //If we still have messages left to process, reschedule for execution
- super.reRegisterForExecution(mbox)
- }
-
- /**
- * Returns true if it successfully donated a message
- */
- protected def donateFrom(donorMbox: MessageQueue with ExecutableMailbox): Boolean = {
- val actors = members // copy to prevent concurrent modifications having any impact
-
- // we risk to pick a thief which is unregistered from the dispatcher in the meantime, but that typically means
- // the dispatcher is being shut down...
- // Starts at is seeded by current time
- doFindDonorRecipient(donorMbox, actors, (System.currentTimeMillis % actors.size).asInstanceOf[Int]) match {
- case null => false
- case recipient => donate(donorMbox.dequeue, recipient)
- }
- }
-
- /**
- * Returns true if the donation succeeded or false otherwise
- */
- protected def attemptDonationOf(message: MessageInvocation, donorMbox: MessageQueue with ExecutableMailbox): Boolean = try {
- donationInProgress.value = true
- val actors = members // copy to prevent concurrent modifications having any impact
- doFindDonorRecipient(donorMbox, actors, System.identityHashCode(message) % actors.size) match {
- case null => false
- case recipient => donate(message, recipient)
- }
- } finally { donationInProgress.value = false }
-
- /**
- * Rewrites the message and adds that message to the recipients mailbox
- * returns true if the message is non-null
- */
- protected def donate(organ: MessageInvocation, recipient: ActorRef): Boolean = {
- if (organ ne null) {
- if (organ.senderFuture.isDefined) recipient.postMessageToMailboxAndCreateFutureResultWithTimeout[Any](
- organ.message, recipient.timeout, organ.sender, organ.senderFuture)
- else if (organ.sender.isDefined) recipient.postMessageToMailbox(organ.message, organ.sender)
- else recipient.postMessageToMailbox(organ.message, None)
- true
- } else false
- }
-
- /**
- * Returns an available recipient for the message, if any
- */
- protected def doFindDonorRecipient(donorMbox: MessageQueue with ExecutableMailbox, potentialRecipients: Vector[ActorRef], startIndex: Int): ActorRef = {
- val prSz = potentialRecipients.size
- var i = 0
- var recipient: ActorRef = null
-
- while ((i < prSz) && (recipient eq null)) {
- val actor = potentialRecipients((i + startIndex) % prSz) //Wrap-around, one full lap
- val mbox = getMailbox(actor)
-
- if ((mbox ne donorMbox) && mbox.isEmpty) { //Don't donate to yourself
- recipient = actor //Found!
- }
-
- i += 1
- }
-
- recipient // nothing found, reuse same start index next time
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/dispatch/MailboxHandling.scala b/test/disabled/presentation/akka/src/akka/dispatch/MailboxHandling.scala
deleted file mode 100644
index 4c00577157..0000000000
--- a/test/disabled/presentation/akka/src/akka/dispatch/MailboxHandling.scala
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.dispatch
-
-import akka.AkkaException
-
-import java.util.{ Comparator, PriorityQueue }
-import java.util.concurrent._
-import akka.util._
-
-class MessageQueueAppendFailedException(message: String, cause: Throwable = null) extends AkkaException(message, cause)
-
-/**
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-trait MessageQueue {
- val dispatcherLock = new SimpleLock
- val suspended = new SimpleLock
- def enqueue(handle: MessageInvocation)
- def dequeue(): MessageInvocation
- def size: Int
- def isEmpty: Boolean
-}
-
-/**
- * Mailbox configuration.
- */
-sealed trait MailboxType
-
-case class UnboundedMailbox() extends MailboxType
-case class BoundedMailbox(
- val capacity: Int = { if (Dispatchers.MAILBOX_CAPACITY < 0) Int.MaxValue else Dispatchers.MAILBOX_CAPACITY },
- val pushTimeOut: Duration = Dispatchers.MAILBOX_PUSH_TIME_OUT) extends MailboxType {
- if (capacity < 0) throw new IllegalArgumentException("The capacity for BoundedMailbox can not be negative")
- if (pushTimeOut eq null) throw new IllegalArgumentException("The push time-out for BoundedMailbox can not be null")
-}
-
-trait UnboundedMessageQueueSemantics extends MessageQueue { self: BlockingQueue[MessageInvocation] =>
- @inline
- final def enqueue(handle: MessageInvocation): Unit = this add handle
- @inline
- final def dequeue(): MessageInvocation = this.poll()
-}
-
-trait BoundedMessageQueueSemantics extends MessageQueue { self: BlockingQueue[MessageInvocation] =>
- def pushTimeOut: Duration
-
- final def enqueue(handle: MessageInvocation) {
- if (pushTimeOut.length > 0) {
- this.offer(handle, pushTimeOut.length, pushTimeOut.unit) || {
- throw new MessageQueueAppendFailedException("Couldn't enqueue message " + handle + " to " + toString)
- }
- } else this put handle
- }
-
- @inline
- final def dequeue(): MessageInvocation = this.poll()
-}
-
-class DefaultUnboundedMessageQueue extends LinkedBlockingQueue[MessageInvocation] with UnboundedMessageQueueSemantics
-
-class DefaultBoundedMessageQueue(capacity: Int, val pushTimeOut: Duration) extends LinkedBlockingQueue[MessageInvocation](capacity) with BoundedMessageQueueSemantics
-
-class UnboundedPriorityMessageQueue(cmp: Comparator[MessageInvocation]) extends PriorityBlockingQueue[MessageInvocation](11, cmp) with UnboundedMessageQueueSemantics
-
-class BoundedPriorityMessageQueue(capacity: Int, val pushTimeOut: Duration, cmp: Comparator[MessageInvocation]) extends BoundedBlockingQueue[MessageInvocation](capacity, new PriorityQueue[MessageInvocation](11, cmp)) with BoundedMessageQueueSemantics
diff --git a/test/disabled/presentation/akka/src/akka/dispatch/MessageHandling.scala b/test/disabled/presentation/akka/src/akka/dispatch/MessageHandling.scala
deleted file mode 100644
index 20887c3867..0000000000
--- a/test/disabled/presentation/akka/src/akka/dispatch/MessageHandling.scala
+++ /dev/null
@@ -1,260 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.dispatch
-
-import java.util.concurrent._
-import java.util.concurrent.atomic.AtomicLong
-import akka.event.EventHandler
-import akka.config.Configuration
-import akka.config.Config.TIME_UNIT
-import akka.util.{ Duration, Switch, ReentrantGuard }
-import java.util.concurrent.ThreadPoolExecutor.{ AbortPolicy, CallerRunsPolicy, DiscardOldestPolicy, DiscardPolicy }
-import akka.actor._
-
-/**
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-final case class MessageInvocation(val receiver: ActorRef,
- val message: Any,
- val sender: Option[ActorRef],
- val senderFuture: Option[CompletableFuture[Any]]) {
- if (receiver eq null) throw new IllegalArgumentException("Receiver can't be null")
-
- def invoke = try {
- receiver.invoke(this)
- } catch {
- case e: NullPointerException => throw new ActorInitializationException(
- "Don't call 'self ! message' in the Actor's constructor (in Scala this means in the body of the class).")
- }
-}
-
-final case class FutureInvocation[T](future: CompletableFuture[T], function: () => T, cleanup: () => Unit) extends Runnable {
- def run = {
- future complete (try {
- Right(function())
- } catch {
- case e =>
- EventHandler.error(e, this, e.getMessage)
- Left(e)
- }
- finally {
- cleanup()
- })
- }
-}
-
-object MessageDispatcher {
- val UNSCHEDULED = 0
- val SCHEDULED = 1
- val RESCHEDULED = 2
-
- implicit def defaultGlobalDispatcher = Dispatchers.defaultGlobalDispatcher
-}
-
-/**
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-trait MessageDispatcher {
- import MessageDispatcher._
-
- protected val uuids = new ConcurrentSkipListSet[Uuid]
- protected val futures = new AtomicLong(0L)
- protected val guard = new ReentrantGuard
- protected val active = new Switch(false)
-
- private var shutdownSchedule = UNSCHEDULED //This can be non-volatile since it is protected by guard withGuard
-
- /**
- * Creates and returns a mailbox for the given actor.
- */
- private[akka] def createMailbox(actorRef: ActorRef): AnyRef
-
- /**
- * Attaches the specified actorRef to this dispatcher
- */
- final def attach(actorRef: ActorRef): Unit = guard withGuard {
- register(actorRef)
- }
-
- /**
- * Detaches the specified actorRef from this dispatcher
- */
- final def detach(actorRef: ActorRef): Unit = guard withGuard {
- unregister(actorRef)
- }
-
- private[akka] final def dispatchMessage(invocation: MessageInvocation): Unit = dispatch(invocation)
-
- private[akka] final def dispatchFuture[T](block: () => T, timeout: Long): Future[T] = {
- futures.getAndIncrement()
- try {
- val future = new DefaultCompletableFuture[T](timeout)
-
- if (active.isOff)
- guard withGuard { active.switchOn { start } }
-
- executeFuture(FutureInvocation[T](future, block, futureCleanup))
- future
- } catch {
- case e =>
- futures.decrementAndGet
- throw e
- }
- }
-
- private val futureCleanup: () => Unit =
- () => if (futures.decrementAndGet() == 0) {
- guard withGuard {
- if (futures.get == 0 && uuids.isEmpty) {
- shutdownSchedule match {
- case UNSCHEDULED =>
- shutdownSchedule = SCHEDULED
- Scheduler.scheduleOnce(shutdownAction, timeoutMs, TimeUnit.MILLISECONDS)
- case SCHEDULED =>
- shutdownSchedule = RESCHEDULED
- case RESCHEDULED => //Already marked for reschedule
- }
- }
- }
- }
-
- private[akka] def register(actorRef: ActorRef) {
- if (actorRef.mailbox eq null)
- actorRef.mailbox = createMailbox(actorRef)
-
- uuids add actorRef.uuid
- if (active.isOff) {
- active.switchOn {
- start
- }
- }
- }
-
- private[akka] def unregister(actorRef: ActorRef) = {
- if (uuids remove actorRef.uuid) {
- actorRef.mailbox = null
- if (uuids.isEmpty && futures.get == 0) {
- shutdownSchedule match {
- case UNSCHEDULED =>
- shutdownSchedule = SCHEDULED
- Scheduler.scheduleOnce(shutdownAction, timeoutMs, TimeUnit.MILLISECONDS)
- case SCHEDULED =>
- shutdownSchedule = RESCHEDULED
- case RESCHEDULED => //Already marked for reschedule
- }
- }
- }
- }
-
- /**
- * Traverses the list of actors (uuids) currently being attached to this dispatcher and stops those actors
- */
- def stopAllAttachedActors {
- val i = uuids.iterator
- while (i.hasNext()) {
- val uuid = i.next()
- Actor.registry.actorFor(uuid) match {
- case Some(actor) => actor.stop()
- case None => {}
- }
- }
- }
-
- private val shutdownAction = new Runnable {
- def run = guard withGuard {
- shutdownSchedule match {
- case RESCHEDULED =>
- shutdownSchedule = SCHEDULED
- Scheduler.scheduleOnce(this, timeoutMs, TimeUnit.MILLISECONDS)
- case SCHEDULED =>
- if (uuids.isEmpty && futures.get == 0) {
- active switchOff {
- shutdown // shut down in the dispatcher's references is zero
- }
- }
- shutdownSchedule = UNSCHEDULED
- case UNSCHEDULED => //Do nothing
- }
- }
- }
-
- /**
- * When the dispatcher no longer has any actors registered, how long will it wait until it shuts itself down, in Ms
- * defaulting to your akka configs "akka.actor.dispatcher-shutdown-timeout" or otherwise, 1 Second
- */
- private[akka] def timeoutMs: Long = Dispatchers.DEFAULT_SHUTDOWN_TIMEOUT.toMillis
-
- /**
- * After the call to this method, the dispatcher mustn't begin any new message processing for the specified reference
- */
- def suspend(actorRef: ActorRef): Unit
-
- /*
- * After the call to this method, the dispatcher must begin any new message processing for the specified reference
- */
- def resume(actorRef: ActorRef): Unit
-
- /**
- * Will be called when the dispatcher is to queue an invocation for execution
- */
- private[akka] def dispatch(invocation: MessageInvocation): Unit
-
- private[akka] def executeFuture(invocation: FutureInvocation[_]): Unit
-
- /**
- * Called one time every time an actor is attached to this dispatcher and this dispatcher was previously shutdown
- */
- private[akka] def start(): Unit
-
- /**
- * Called one time every time an actor is detached from this dispatcher and this dispatcher has no actors left attached
- */
- private[akka] def shutdown(): Unit
-
- /**
- * Returns the size of the mailbox for the specified actor
- */
- def mailboxSize(actorRef: ActorRef): Int
-
- /**
- * Returns the amount of futures queued for execution
- */
- def pendingFutures: Long = futures.get
-}
-
-/**
- * Trait to be used for hooking in new dispatchers into Dispatchers.fromConfig
- */
-abstract class MessageDispatcherConfigurator {
- /**
- * Returns an instance of MessageDispatcher given a Configuration
- */
- def configure(config: Configuration): MessageDispatcher
-
- def mailboxType(config: Configuration): MailboxType = {
- val capacity = config.getInt("mailbox-capacity", Dispatchers.MAILBOX_CAPACITY)
- if (capacity < 1) UnboundedMailbox()
- else BoundedMailbox(capacity, Duration(config.getInt("mailbox-push-timeout-time", Dispatchers.MAILBOX_PUSH_TIME_OUT.toMillis.toInt), TIME_UNIT))
- }
-
- def configureThreadPool(config: Configuration, createDispatcher: => (ThreadPoolConfig) => MessageDispatcher): ThreadPoolConfigDispatcherBuilder = {
- import ThreadPoolConfigDispatcherBuilder.conf_?
-
- //Apply the following options to the config if they are present in the config
- ThreadPoolConfigDispatcherBuilder(createDispatcher, ThreadPoolConfig()).configure(
- conf_?(config getInt "keep-alive-time")(time => _.setKeepAliveTime(Duration(time, TIME_UNIT))),
- conf_?(config getDouble "core-pool-size-factor")(factor => _.setCorePoolSizeFromFactor(factor)),
- conf_?(config getDouble "max-pool-size-factor")(factor => _.setMaxPoolSizeFromFactor(factor)),
- conf_?(config getInt "executor-bounds")(bounds => _.setExecutorBounds(bounds)),
- conf_?(config getBool "allow-core-timeout")(allow => _.setAllowCoreThreadTimeout(allow)),
- conf_?(config getString "rejection-policy" map {
- case "abort" => new AbortPolicy()
- case "caller-runs" => new CallerRunsPolicy()
- case "discard-oldest" => new DiscardOldestPolicy()
- case "discard" => new DiscardPolicy()
- case x => throw new IllegalArgumentException("[%s] is not a valid rejectionPolicy!" format x)
- })(policy => _.setRejectionPolicy(policy)))
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/dispatch/ThreadBasedDispatcher.scala b/test/disabled/presentation/akka/src/akka/dispatch/ThreadBasedDispatcher.scala
deleted file mode 100644
index 3169c70ef9..0000000000
--- a/test/disabled/presentation/akka/src/akka/dispatch/ThreadBasedDispatcher.scala
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.dispatch
-
-import akka.actor.{ Actor, ActorRef }
-import akka.config.Config.config
-import akka.util.Duration
-
-import java.util.Queue
-import java.util.concurrent.{ ConcurrentLinkedQueue, BlockingQueue, TimeUnit, LinkedBlockingQueue }
-import akka.actor
-import java.util.concurrent.atomic.AtomicReference
-
-/**
- * Dedicates a unique thread for each actor passed in as reference. Served through its messageQueue.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-class ThreadBasedDispatcher(_actor: ActorRef, _mailboxType: MailboxType)
- extends ExecutorBasedEventDrivenDispatcher(
- _actor.uuid.toString, Dispatchers.THROUGHPUT, -1, _mailboxType, ThreadBasedDispatcher.oneThread) {
-
- private[akka] val owner = new AtomicReference[ActorRef](_actor)
-
- def this(actor: ActorRef) =
- this(actor, UnboundedMailbox()) // For Java API
-
- def this(actor: ActorRef, capacity: Int) =
- this(actor, BoundedMailbox(capacity)) //For Java API
-
- def this(actor: ActorRef, capacity: Int, pushTimeOut: Duration) = //For Java API
- this(actor, BoundedMailbox(capacity, pushTimeOut))
-
- override def register(actorRef: ActorRef) = {
- val actor = owner.get()
- if ((actor ne null) && actorRef != actor) throw new IllegalArgumentException("Cannot register to anyone but " + actor)
- owner.compareAndSet(null, actorRef) //Register if unregistered
- super.register(actorRef)
- }
-
- override def unregister(actorRef: ActorRef) = {
- super.unregister(actorRef)
- owner.compareAndSet(actorRef, null) //Unregister (prevent memory leak)
- }
-}
-
-object ThreadBasedDispatcher {
- val oneThread: ThreadPoolConfig = ThreadPoolConfig(allowCorePoolTimeout = true, corePoolSize = 1, maxPoolSize = 1)
-}
-
diff --git a/test/disabled/presentation/akka/src/akka/dispatch/ThreadPoolBuilder.scala b/test/disabled/presentation/akka/src/akka/dispatch/ThreadPoolBuilder.scala
deleted file mode 100644
index e847610c4c..0000000000
--- a/test/disabled/presentation/akka/src/akka/dispatch/ThreadPoolBuilder.scala
+++ /dev/null
@@ -1,259 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.dispatch
-
-import java.util.Collection
-import java.util.concurrent._
-import atomic.{ AtomicLong, AtomicInteger }
-import ThreadPoolExecutor.CallerRunsPolicy
-
-import akka.util.Duration
-import akka.event.EventHandler
-
-object ThreadPoolConfig {
- type Bounds = Int
- type FlowHandler = Either[RejectedExecutionHandler, Bounds]
- type QueueFactory = () => BlockingQueue[Runnable]
-
- val defaultAllowCoreThreadTimeout: Boolean = false
- val defaultCorePoolSize: Int = 16
- val defaultMaxPoolSize: Int = 128
- val defaultTimeout: Duration = Duration(60000L, TimeUnit.MILLISECONDS)
- def defaultFlowHandler: FlowHandler = flowHandler(new CallerRunsPolicy)
-
- def flowHandler(rejectionHandler: RejectedExecutionHandler): FlowHandler = Left(rejectionHandler)
- def flowHandler(bounds: Int): FlowHandler = Right(bounds)
-
- def fixedPoolSize(size: Int): Int = size
- def scaledPoolSize(multiplier: Double): Int =
- (Runtime.getRuntime.availableProcessors * multiplier).ceil.toInt
-
- def arrayBlockingQueue(capacity: Int, fair: Boolean): QueueFactory =
- () => new ArrayBlockingQueue[Runnable](capacity, fair)
-
- def synchronousQueue(fair: Boolean): QueueFactory =
- () => new SynchronousQueue[Runnable](fair)
-
- def linkedBlockingQueue(): QueueFactory =
- () => new LinkedBlockingQueue[Runnable]()
-
- def linkedBlockingQueue(capacity: Int): QueueFactory =
- () => new LinkedBlockingQueue[Runnable](capacity)
-
- def reusableQueue(queue: BlockingQueue[Runnable]): QueueFactory =
- () => queue
-
- def reusableQueue(queueFactory: QueueFactory): QueueFactory = {
- val queue = queueFactory()
- () => queue
- }
-}
-
-case class ThreadPoolConfig(allowCorePoolTimeout: Boolean = ThreadPoolConfig.defaultAllowCoreThreadTimeout,
- corePoolSize: Int = ThreadPoolConfig.defaultCorePoolSize,
- maxPoolSize: Int = ThreadPoolConfig.defaultMaxPoolSize,
- threadTimeout: Duration = ThreadPoolConfig.defaultTimeout,
- flowHandler: ThreadPoolConfig.FlowHandler = ThreadPoolConfig.defaultFlowHandler,
- queueFactory: ThreadPoolConfig.QueueFactory = ThreadPoolConfig.linkedBlockingQueue()) {
-
- final def createLazyExecutorService(threadFactory: ThreadFactory): ExecutorService =
- new LazyExecutorServiceWrapper(createExecutorService(threadFactory))
-
- final def createExecutorService(threadFactory: ThreadFactory): ExecutorService = {
- flowHandler match {
- case Left(rejectHandler) =>
- val service = new ThreadPoolExecutor(corePoolSize, maxPoolSize, threadTimeout.length, threadTimeout.unit, queueFactory(), threadFactory, rejectHandler)
- service.allowCoreThreadTimeOut(allowCorePoolTimeout)
- service
- case Right(bounds) =>
- val service = new ThreadPoolExecutor(corePoolSize, maxPoolSize, threadTimeout.length, threadTimeout.unit, queueFactory(), threadFactory)
- service.allowCoreThreadTimeOut(allowCorePoolTimeout)
- new BoundedExecutorDecorator(service, bounds)
- }
- }
-}
-
-trait DispatcherBuilder {
- def build: MessageDispatcher
-}
-
-object ThreadPoolConfigDispatcherBuilder {
- def conf_?[T](opt: Option[T])(fun: (T) => ThreadPoolConfigDispatcherBuilder => ThreadPoolConfigDispatcherBuilder): Option[(ThreadPoolConfigDispatcherBuilder) => ThreadPoolConfigDispatcherBuilder] = opt map fun
-}
-
-case class ThreadPoolConfigDispatcherBuilder(dispatcherFactory: (ThreadPoolConfig) => MessageDispatcher, config: ThreadPoolConfig) extends DispatcherBuilder {
- import ThreadPoolConfig._
- def build = dispatcherFactory(config)
-
- //TODO remove this, for backwards compat only
- @deprecated("Use .build instead", "1.1")
- def buildThreadPool = build
-
- def withNewBoundedThreadPoolWithLinkedBlockingQueueWithUnboundedCapacity(bounds: Int): ThreadPoolConfigDispatcherBuilder =
- this.copy(config = config.copy(flowHandler = flowHandler(bounds), queueFactory = linkedBlockingQueue()))
-
- def withNewThreadPoolWithCustomBlockingQueue(newQueueFactory: QueueFactory): ThreadPoolConfigDispatcherBuilder =
- this.copy(config = config.copy(flowHandler = defaultFlowHandler, queueFactory = newQueueFactory))
-
- def withNewThreadPoolWithCustomBlockingQueue(queue: BlockingQueue[Runnable]): ThreadPoolConfigDispatcherBuilder =
- withNewThreadPoolWithCustomBlockingQueue(reusableQueue(queue))
-
- def withNewThreadPoolWithLinkedBlockingQueueWithUnboundedCapacity: ThreadPoolConfigDispatcherBuilder =
- this.copy(config = config.copy(queueFactory = linkedBlockingQueue(), flowHandler = defaultFlowHandler))
-
- def withNewThreadPoolWithLinkedBlockingQueueWithCapacity(capacity: Int): ThreadPoolConfigDispatcherBuilder =
- this.copy(config = config.copy(queueFactory = linkedBlockingQueue(capacity), flowHandler = defaultFlowHandler))
-
- def withNewThreadPoolWithSynchronousQueueWithFairness(fair: Boolean): ThreadPoolConfigDispatcherBuilder =
- this.copy(config = config.copy(queueFactory = synchronousQueue(fair), flowHandler = defaultFlowHandler))
-
- def withNewThreadPoolWithArrayBlockingQueueWithCapacityAndFairness(capacity: Int, fair: Boolean): ThreadPoolConfigDispatcherBuilder =
- this.copy(config = config.copy(queueFactory = arrayBlockingQueue(capacity, fair), flowHandler = defaultFlowHandler))
-
- def setCorePoolSize(size: Int): ThreadPoolConfigDispatcherBuilder =
- this.copy(config = config.copy(corePoolSize = size))
-
- def setMaxPoolSize(size: Int): ThreadPoolConfigDispatcherBuilder =
- this.copy(config = config.copy(maxPoolSize = size))
-
- def setCorePoolSizeFromFactor(multiplier: Double): ThreadPoolConfigDispatcherBuilder =
- setCorePoolSize(scaledPoolSize(multiplier))
-
- def setMaxPoolSizeFromFactor(multiplier: Double): ThreadPoolConfigDispatcherBuilder =
- setMaxPoolSize(scaledPoolSize(multiplier))
-
- def setExecutorBounds(bounds: Int): ThreadPoolConfigDispatcherBuilder =
- this.copy(config = config.copy(flowHandler = flowHandler(bounds)))
-
- def setKeepAliveTimeInMillis(time: Long): ThreadPoolConfigDispatcherBuilder =
- setKeepAliveTime(Duration(time, TimeUnit.MILLISECONDS))
-
- def setKeepAliveTime(time: Duration): ThreadPoolConfigDispatcherBuilder =
- this.copy(config = config.copy(threadTimeout = time))
-
- def setRejectionPolicy(policy: RejectedExecutionHandler): ThreadPoolConfigDispatcherBuilder =
- setFlowHandler(flowHandler(policy))
-
- def setFlowHandler(newFlowHandler: FlowHandler): ThreadPoolConfigDispatcherBuilder =
- this.copy(config = config.copy(flowHandler = newFlowHandler))
-
- def setAllowCoreThreadTimeout(allow: Boolean): ThreadPoolConfigDispatcherBuilder =
- this.copy(config = config.copy(allowCorePoolTimeout = allow))
-
- def configure(fs: Option[Function[ThreadPoolConfigDispatcherBuilder, ThreadPoolConfigDispatcherBuilder]]*): ThreadPoolConfigDispatcherBuilder = fs.foldLeft(this)((c, f) => f.map(_(c)).getOrElse(c))
-}
-
-/**
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-class MonitorableThreadFactory(val name: String) extends ThreadFactory {
- protected val counter = new AtomicLong
-
- def newThread(runnable: Runnable) = new MonitorableThread(runnable, name)
-}
-
-/**
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-object MonitorableThread {
- val DEFAULT_NAME = "MonitorableThread"
-
- // FIXME use MonitorableThread.created and MonitorableThread.alive in monitoring
- val created = new AtomicInteger
- val alive = new AtomicInteger
-}
-
-/**
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-class MonitorableThread(runnable: Runnable, name: String)
- extends Thread(runnable, name + "-" + MonitorableThread.created.incrementAndGet) {
-
- setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
- def uncaughtException(thread: Thread, cause: Throwable) = {}
- })
-
- override def run = {
- try {
- MonitorableThread.alive.incrementAndGet
- super.run
- } finally {
- MonitorableThread.alive.decrementAndGet
- }
- }
-}
-
-/**
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-class BoundedExecutorDecorator(val executor: ExecutorService, bound: Int) extends ExecutorServiceDelegate {
- protected val semaphore = new Semaphore(bound)
-
- override def execute(command: Runnable) = {
- semaphore.acquire
- try {
- executor.execute(new Runnable() {
- def run = {
- try {
- command.run
- } finally {
- semaphore.release
- }
- }
- })
- } catch {
- case e: RejectedExecutionException =>
- EventHandler.warning(this, e.toString)
- semaphore.release
- case e: Throwable =>
- EventHandler.error(e, this, e.getMessage)
- throw e
- }
- }
-}
-
-trait ExecutorServiceDelegate extends ExecutorService {
-
- def executor: ExecutorService
-
- def execute(command: Runnable) = executor.execute(command)
-
- def shutdown() { executor.shutdown() }
-
- def shutdownNow() = executor.shutdownNow()
-
- def isShutdown = executor.isShutdown
-
- def isTerminated = executor.isTerminated
-
- def awaitTermination(l: Long, timeUnit: TimeUnit) = executor.awaitTermination(l, timeUnit)
-
- def submit[T](callable: Callable[T]) = executor.submit(callable)
-
- def submit[T](runnable: Runnable, t: T) = executor.submit(runnable, t)
-
- def submit(runnable: Runnable) = executor.submit(runnable)
-
- def invokeAll[T](callables: Collection[_ <: Callable[T]]) = executor.invokeAll(callables)
-
- def invokeAll[T](callables: Collection[_ <: Callable[T]], l: Long, timeUnit: TimeUnit) = executor.invokeAll(callables, l, timeUnit)
-
- def invokeAny[T](callables: Collection[_ <: Callable[T]]) = executor.invokeAny(callables)
-
- def invokeAny[T](callables: Collection[_ <: Callable[T]], l: Long, timeUnit: TimeUnit) = executor.invokeAny(callables, l, timeUnit)
-}
-
-trait LazyExecutorService extends ExecutorServiceDelegate {
-
- def createExecutor: ExecutorService
-
- lazy val executor = {
- createExecutor
- }
-}
-
-class LazyExecutorServiceWrapper(executorFactory: => ExecutorService) extends LazyExecutorService {
- def createExecutor = executorFactory
-}
diff --git a/test/disabled/presentation/akka/src/akka/event/EventHandler.scala b/test/disabled/presentation/akka/src/akka/event/EventHandler.scala
deleted file mode 100644
index af2fee6c47..0000000000
--- a/test/disabled/presentation/akka/src/akka/event/EventHandler.scala
+++ /dev/null
@@ -1,235 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.event
-
-import akka.actor._
-import akka.config.Config._
-import akka.config.ConfigurationException
-import akka.util.{ ListenerManagement, ReflectiveAccess }
-import akka.AkkaException
-
-/**
- * Event handler.
- * <p/>
- * Create, add and remove a listener:
- * <pre>
- * val eventHandlerListener = Actor.actorOf(new Actor {
- * self.dispatcher = EventHandler.EventHandlerDispatcher
- *
- * def receive = {
- * case EventHandler.Error(cause, instance, message) => ...
- * case EventHandler.Warning(instance, message) => ...
- * case EventHandler.Info(instance, message) => ...
- * case EventHandler.Debug(instance, message) => ...
- * case genericEvent => ...
- * }
- * })
- *
- * EventHandler.addListener(eventHandlerListener)
- * ...
- * EventHandler.removeListener(eventHandlerListener)
- * </pre>
- * <p/>
- * However best is probably to register the listener in the 'akka.conf'
- * configuration file.
- * <p/>
- * Log an error event:
- * <pre>
- * EventHandler.notify(EventHandler.Error(exception, this, message))
- * </pre>
- * Or use the direct methods (better performance):
- * <pre>
- * EventHandler.error(exception, this, message)
- * </pre>
- *
- * Shut down the EventHandler:
- * <pre>
- * EventHandler.shutdown()
- * </pre>
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-object EventHandler extends ListenerManagement {
- import java.io.{ StringWriter, PrintWriter }
- import java.text.DateFormat
- import java.util.Date
- import akka.dispatch.Dispatchers
-
- val ErrorLevel = 1
- val WarningLevel = 2
- val InfoLevel = 3
- val DebugLevel = 4
-
- sealed trait Event {
- @transient
- val thread: Thread = Thread.currentThread
- val level: Int
- }
- case class Error(cause: Throwable, instance: AnyRef, message: Any = "") extends Event {
- override val level = ErrorLevel
- }
- case class Warning(instance: AnyRef, message: Any = "") extends Event {
- override val level = WarningLevel
- }
- case class Info(instance: AnyRef, message: Any = "") extends Event {
- override val level = InfoLevel
- }
- case class Debug(instance: AnyRef, message: Any = "") extends Event {
- override val level = DebugLevel
- }
-
- val error = "[ERROR] [%s] [%s] [%s] %s\n%s".intern
- val warning = "[WARN] [%s] [%s] [%s] %s".intern
- val info = "[INFO] [%s] [%s] [%s] %s".intern
- val debug = "[DEBUG] [%s] [%s] [%s] %s".intern
- val generic = "[GENERIC] [%s] [%s]".intern
- val ID = "event:handler".intern
-
- class EventHandlerException extends AkkaException
-
- lazy val EventHandlerDispatcher = Dispatchers.newExecutorBasedEventDrivenDispatcher(ID).build
-
- val level: Int = config.getString("akka.event-handler-level", "INFO") match {
- case "ERROR" => ErrorLevel
- case "WARNING" => WarningLevel
- case "INFO" => InfoLevel
- case "DEBUG" => DebugLevel
- case unknown => throw new ConfigurationException(
- "Configuration option 'akka.event-handler-level' is invalid [" + unknown + "]")
- }
-
- /**
- * Shuts down all event handler listeners including the event handle dispatcher.
- */
- def shutdown() {
- foreachListener(_.stop())
- EventHandlerDispatcher.shutdown()
- }
-
- def notify(event: Any) {
- if (event.isInstanceOf[Event]) {
- if (level >= event.asInstanceOf[Event].level) notifyListeners(event)
- } else
- notifyListeners(event)
- }
-
- def notify[T <: Event: ClassTag](event: => T) {
- if (level >= levelFor(classTag[T].erasure.asInstanceOf[Class[_ <: Event]])) notifyListeners(event)
- }
-
- def error(cause: Throwable, instance: AnyRef, message: => String) {
- if (level >= ErrorLevel) notifyListeners(Error(cause, instance, message))
- }
-
- def error(cause: Throwable, instance: AnyRef, message: Any) {
- if (level >= ErrorLevel) notifyListeners(Error(cause, instance, message))
- }
-
- def error(instance: AnyRef, message: => String) {
- if (level >= ErrorLevel) notifyListeners(Error(new EventHandlerException, instance, message))
- }
-
- def error(instance: AnyRef, message: Any) {
- if (level >= ErrorLevel) notifyListeners(Error(new EventHandlerException, instance, message))
- }
-
- def warning(instance: AnyRef, message: => String) {
- if (level >= WarningLevel) notifyListeners(Warning(instance, message))
- }
-
- def warning(instance: AnyRef, message: Any) {
- if (level >= WarningLevel) notifyListeners(Warning(instance, message))
- }
-
- def info(instance: AnyRef, message: => String) {
- if (level >= InfoLevel) notifyListeners(Info(instance, message))
- }
-
- def info(instance: AnyRef, message: Any) {
- if (level >= InfoLevel) notifyListeners(Info(instance, message))
- }
-
- def debug(instance: AnyRef, message: => String) {
- if (level >= DebugLevel) notifyListeners(Debug(instance, message))
- }
-
- def debug(instance: AnyRef, message: Any) {
- if (level >= DebugLevel) notifyListeners(Debug(instance, message))
- }
-
- def isInfoEnabled = level >= InfoLevel
-
- def isDebugEnabled = level >= DebugLevel
-
- def formattedTimestamp = DateFormat.getInstance.format(new Date)
-
- def stackTraceFor(e: Throwable) = {
- val sw = new StringWriter
- val pw = new PrintWriter(sw)
- e.printStackTrace(pw)
- sw.toString
- }
-
- private def levelFor(eventClass: Class[_ <: Event]) = {
- if (eventClass.isInstanceOf[Error]) ErrorLevel
- else if (eventClass.isInstanceOf[Warning]) WarningLevel
- else if (eventClass.isInstanceOf[Info]) InfoLevel
- else if (eventClass.isInstanceOf[Debug]) DebugLevel
- else DebugLevel
- }
-
- class DefaultListener extends Actor {
- self.id = ID
- self.dispatcher = EventHandlerDispatcher
-
- def receive = {
- case event@Error(cause, instance, message) =>
- println(error.format(
- formattedTimestamp,
- event.thread.getName,
- instance.getClass.getSimpleName,
- message,
- stackTraceFor(cause)))
- case event@Warning(instance, message) =>
- println(warning.format(
- formattedTimestamp,
- event.thread.getName,
- instance.getClass.getSimpleName,
- message))
- case event@Info(instance, message) =>
- println(info.format(
- formattedTimestamp,
- event.thread.getName,
- instance.getClass.getSimpleName,
- message))
- case event@Debug(instance, message) =>
- println(debug.format(
- formattedTimestamp,
- event.thread.getName,
- instance.getClass.getSimpleName,
- message))
- case event =>
- println(generic.format(formattedTimestamp, event.toString))
- }
- }
-
- val defaultListeners = config.getList("akka.event-handlers") match {
- case Nil => "akka.event.EventHandler$DefaultListener" :: Nil
- case listeners => listeners
- }
- defaultListeners foreach { listenerName =>
- try {
- ReflectiveAccess.getClassFor[Actor](listenerName) match {
- case r: Right[_, Class[Actor]] => addListener(Actor.actorOf(r.b).start())
- case l: Left[Exception, _] => throw l.a
- }
- } catch {
- case e: Exception =>
- throw new ConfigurationException(
- "Event Handler specified in config can't be loaded [" + listenerName +
- "] due to [" + e.toString + "]", e)
- }
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/event/JavaEventHandler.java b/test/disabled/presentation/akka/src/akka/event/JavaEventHandler.java
deleted file mode 100644
index 7e6e2d4143..0000000000
--- a/test/disabled/presentation/akka/src/akka/event/JavaEventHandler.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package akka.event;
-
-
-import akka.actor.ActorRef;
-
-/**
- * Java API for Akka EventHandler
- */
-
-public class JavaEventHandler {
-
-
- public static void notify(Object message){
- EventHandler$.MODULE$.notify(message);
- }
-
- public static void debug(ActorRef instance, Object message){
- EventHandler$.MODULE$.debug(instance, message);
- }
-
- public static void info(ActorRef instance, Object message){
- EventHandler$.MODULE$.info(instance,message);
- }
-
- public static void warning(ActorRef instance, Object message){
- EventHandler$.MODULE$.warning(instance,message);
- }
-
- public static void error(ActorRef instance, Object message){
- EventHandler$.MODULE$.debug(instance,message);
- }
-
-}
-
-
diff --git a/test/disabled/presentation/akka/src/akka/japi/JavaAPI.scala b/test/disabled/presentation/akka/src/akka/japi/JavaAPI.scala
deleted file mode 100644
index 17ef3f7bb8..0000000000
--- a/test/disabled/presentation/akka/src/akka/japi/JavaAPI.scala
+++ /dev/null
@@ -1,108 +0,0 @@
-package akka.japi
-
-/**
- * A Function interface. Used to create first-class-functions is Java (sort of).
- */
-trait Function[T, R] {
- def apply(param: T): R
-}
-
-/**
- * A Function interface. Used to create 2-arg first-class-functions is Java (sort of).
- */
-trait Function2[T1, T2, R] {
- def apply(arg1: T1, arg2: T2): R
-}
-
-/**
- * A Procedure is like a Function, but it doesn't produce a return value
- */
-trait Procedure[T] {
- def apply(param: T): Unit
-}
-
-/**
- * A Procedure is like a Function, but it doesn't produce a return value
- */
-trait Procedure2[T1, T2] {
- def apply(param: T1, param2: T2): Unit
-}
-
-/**
- * An executable piece of code that takes no parameters and doesn't return any value.
- */
-trait SideEffect {
- def apply: Unit
-}
-
-/**
- * An executable piece of code that takes no parameters and doesn't return any value.
- */
-trait Effect {
- def apply: Unit
-}
-
-/**
- * + * A constructor/factory, takes no parameters but creates a new value of type T every call
- * +
- */
-trait Creator[T] {
- def create: T
-}
-
-/**
- * This class represents optional values. Instances of <code>Option</code>
- * are either instances of case class <code>Some</code> or it is case
- * object <code>None</code>.
- * <p>
- * Java API
- */
-sealed abstract class Option[A] extends java.lang.Iterable[A] {
- import scala.collection.convert.wrapAsScala._
-
- def get: A
- def isEmpty: Boolean
- def isDefined = !isEmpty
- def asScala: scala.Option[A]
- def iterator = if (isEmpty) Iterator.empty else Iterator.single(get)
-}
-
-object Option {
- /**
- * <code>Option</code> factory that creates <code>Some</code>
- */
- def some[A](v: A): Option[A] = Some(v)
-
- /**
- * <code>Option</code> factory that creates <code>None</code>
- */
- def none[A] = None.asInstanceOf[Option[A]]
-
- /**
- * <code>Option</code> factory that creates <code>None</code> if
- * <code>v</code> is <code>null</code>, <code>Some(v)</code> otherwise.
- */
- def option[A](v: A): Option[A] = if (v == null) none else some(v)
-
- /**
- * Class <code>Some[A]</code> represents existing values of type
- * <code>A</code>.
- */
- final case class Some[A](v: A) extends Option[A] {
- def get = v
- def isEmpty = false
- def asScala = scala.Some(v)
- }
-
- /**
- * This case object represents non-existent values.
- */
- private case object None extends Option[Nothing] {
- def get = throw new NoSuchElementException("None.get")
- def isEmpty = true
- def asScala = scala.None
- }
-
- implicit def java2ScalaOption[A](o: Option[A]): scala.Option[A] = o.asScala
- implicit def scala2JavaOption[A](o: scala.Option[A]): Option[A] = option(o.get)
-}
diff --git a/test/disabled/presentation/akka/src/akka/remoteinterface/RemoteEventHandler.scala b/test/disabled/presentation/akka/src/akka/remoteinterface/RemoteEventHandler.scala
deleted file mode 100644
index 1c75618301..0000000000
--- a/test/disabled/presentation/akka/src/akka/remoteinterface/RemoteEventHandler.scala
+++ /dev/null
@@ -1,43 +0,0 @@
-package akka.remoteinterface
-
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-import akka.actor.Actor
-import akka.event.EventHandler
-
-/**
- * Remote client and server event listener that pipes the events to the standard Akka EventHander.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-class RemoteEventHandler extends Actor {
- import EventHandler._
-
- self.id = ID
- self.dispatcher = EventHandlerDispatcher
-
- def receive = {
-
- // client
- case RemoteClientError(cause, client, address) => EventHandler.error(cause, client, "RemoteClientError - Address[%s]" format address.toString)
- case RemoteClientWriteFailed(request, cause, client, address) => EventHandler.error(cause, client, "RemoteClientWriteFailed - Request[%s] Address[%s]".format(address.toString))
- case RemoteClientDisconnected(client, address) => EventHandler.info(client, "RemoteClientDisconnected - Address[%s]" format address.toString)
- case RemoteClientConnected(client, address) => EventHandler.info(client, "RemoteClientConnected - Address[%s]" format address.toString)
- case RemoteClientStarted(client, address) => EventHandler.info(client, "RemoteClientStarted - Address[%s]" format address.toString)
- case RemoteClientShutdown(client, address) => EventHandler.info(client, "RemoteClientShutdown - Address[%s]" format address.toString)
-
- // server
- case RemoteServerError(cause, server) => EventHandler.error(cause, server, "RemoteServerError")
- case RemoteServerWriteFailed(request, cause, server, clientAddress) => EventHandler.error(cause, server, "RemoteServerWriteFailed - Request[%s] Address[%s]" format (request, clientAddress.toString))
- case RemoteServerStarted(server) => EventHandler.info(server, "RemoteServerStarted")
- case RemoteServerShutdown(server) => EventHandler.info(server, "RemoteServerShutdown")
- case RemoteServerClientConnected(server, clientAddress) => EventHandler.info(server, "RemoteServerClientConnected - Address[%s]" format clientAddress.toString)
- case RemoteServerClientDisconnected(server, clientAddress) => EventHandler.info(server, "RemoteServerClientDisconnected - Address[%s]" format clientAddress.toString)
- case RemoteServerClientClosed(server, clientAddress) => EventHandler.info(server, "RemoteServerClientClosed - Address[%s]" format clientAddress.toString)
-
- case _ => //ignore other
- }
-}
-
diff --git a/test/disabled/presentation/akka/src/akka/remoteinterface/RemoteInterface.scala b/test/disabled/presentation/akka/src/akka/remoteinterface/RemoteInterface.scala
deleted file mode 100644
index 5219c49dcb..0000000000
--- a/test/disabled/presentation/akka/src/akka/remoteinterface/RemoteInterface.scala
+++ /dev/null
@@ -1,493 +0,0 @@
-/**
- * Copyright (C) 2009-2010 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.remoteinterface
-
-import akka.japi.Creator
-import akka.actor._
-import akka.util._
-import akka.dispatch.CompletableFuture
-import akka.AkkaException
-
-import scala.beans.BeanProperty
-
-import java.net.InetSocketAddress
-import java.util.concurrent.ConcurrentHashMap
-import java.io.{ PrintWriter, PrintStream }
-import java.lang.reflect.InvocationTargetException
-
-trait RemoteModule {
- val UUID_PREFIX = "uuid:".intern
-
- def optimizeLocalScoped_?(): Boolean //Apply optimizations for remote operations in local scope
- protected[akka] def notifyListeners(message: => Any): Unit
-
- private[akka] def actors: ConcurrentHashMap[String, ActorRef]
- private[akka] def actorsByUuid: ConcurrentHashMap[String, ActorRef]
- private[akka] def actorsFactories: ConcurrentHashMap[String, () => ActorRef]
- private[akka] def typedActors: ConcurrentHashMap[String, AnyRef]
- private[akka] def typedActorsByUuid: ConcurrentHashMap[String, AnyRef]
- private[akka] def typedActorsFactories: ConcurrentHashMap[String, () => AnyRef]
-
- /** Lookup methods **/
-
- private[akka] def findActorById(id: String): ActorRef = actors.get(id)
-
- private[akka] def findActorByUuid(uuid: String): ActorRef = actorsByUuid.get(uuid)
-
- private[akka] def findActorFactory(id: String): () => ActorRef = actorsFactories.get(id)
-
- private[akka] def findTypedActorById(id: String): AnyRef = typedActors.get(id)
-
- private[akka] def findTypedActorFactory(id: String): () => AnyRef = typedActorsFactories.get(id)
-
- private[akka] def findTypedActorByUuid(uuid: String): AnyRef = typedActorsByUuid.get(uuid)
-
- private[akka] def findActorByIdOrUuid(id: String, uuid: String): ActorRef = {
- var actorRefOrNull = if (id.startsWith(UUID_PREFIX)) findActorByUuid(id.substring(UUID_PREFIX.length))
- else findActorById(id)
- if (actorRefOrNull eq null) actorRefOrNull = findActorByUuid(uuid)
- actorRefOrNull
- }
-
- private[akka] def findTypedActorByIdOrUuid(id: String, uuid: String): AnyRef = {
- var actorRefOrNull = if (id.startsWith(UUID_PREFIX)) findTypedActorByUuid(id.substring(UUID_PREFIX.length))
- else findTypedActorById(id)
- if (actorRefOrNull eq null) actorRefOrNull = findTypedActorByUuid(uuid)
- actorRefOrNull
- }
-}
-
-/**
- * Life-cycle events for RemoteClient.
- */
-sealed trait RemoteClientLifeCycleEvent
-case class RemoteClientError(
- @BeanProperty cause: Throwable,
- @BeanProperty client: RemoteClientModule,
- @BeanProperty remoteAddress: InetSocketAddress) extends RemoteClientLifeCycleEvent
-case class RemoteClientDisconnected(
- @BeanProperty client: RemoteClientModule,
- @BeanProperty remoteAddress: InetSocketAddress) extends RemoteClientLifeCycleEvent
-case class RemoteClientConnected(
- @BeanProperty client: RemoteClientModule,
- @BeanProperty remoteAddress: InetSocketAddress) extends RemoteClientLifeCycleEvent
-case class RemoteClientStarted(
- @BeanProperty client: RemoteClientModule,
- @BeanProperty remoteAddress: InetSocketAddress) extends RemoteClientLifeCycleEvent
-case class RemoteClientShutdown(
- @BeanProperty client: RemoteClientModule,
- @BeanProperty remoteAddress: InetSocketAddress) extends RemoteClientLifeCycleEvent
-case class RemoteClientWriteFailed(
- @BeanProperty request: AnyRef,
- @BeanProperty cause: Throwable,
- @BeanProperty client: RemoteClientModule,
- @BeanProperty remoteAddress: InetSocketAddress) extends RemoteClientLifeCycleEvent
-
-/**
- * Life-cycle events for RemoteServer.
- */
-sealed trait RemoteServerLifeCycleEvent
-case class RemoteServerStarted(
- @BeanProperty val server: RemoteServerModule) extends RemoteServerLifeCycleEvent
-case class RemoteServerShutdown(
- @BeanProperty val server: RemoteServerModule) extends RemoteServerLifeCycleEvent
-case class RemoteServerError(
- @BeanProperty val cause: Throwable,
- @BeanProperty val server: RemoteServerModule) extends RemoteServerLifeCycleEvent
-case class RemoteServerClientConnected(
- @BeanProperty val server: RemoteServerModule,
- @BeanProperty val clientAddress: Option[InetSocketAddress]) extends RemoteServerLifeCycleEvent
-case class RemoteServerClientDisconnected(
- @BeanProperty val server: RemoteServerModule,
- @BeanProperty val clientAddress: Option[InetSocketAddress]) extends RemoteServerLifeCycleEvent
-case class RemoteServerClientClosed(
- @BeanProperty val server: RemoteServerModule,
- @BeanProperty val clientAddress: Option[InetSocketAddress]) extends RemoteServerLifeCycleEvent
-case class RemoteServerWriteFailed(
- @BeanProperty request: AnyRef,
- @BeanProperty cause: Throwable,
- @BeanProperty server: RemoteServerModule,
- @BeanProperty clientAddress: Option[InetSocketAddress]) extends RemoteServerLifeCycleEvent
-
-/**
- * Thrown for example when trying to send a message using a RemoteClient that is either not started or shut down.
- */
-class RemoteClientException private[akka] (
- message: String,
- @BeanProperty val client: RemoteClientModule,
- val remoteAddress: InetSocketAddress, cause: Throwable = null) extends AkkaException(message, cause)
-
-/**
- * Thrown when the remote server actor dispatching fails for some reason.
- */
-class RemoteServerException private[akka] (message: String) extends AkkaException(message)
-
-/**
- * Thrown when a remote exception sent over the wire cannot be loaded and instantiated
- */
-case class CannotInstantiateRemoteExceptionDueToRemoteProtocolParsingErrorException private[akka] (cause: Throwable, originalClassName: String, originalMessage: String)
- extends AkkaException("\nParsingError[%s]\nOriginalException[%s]\nOriginalMessage[%s]"
- .format(cause.toString, originalClassName, originalMessage)) {
- override def printStackTrace = cause.printStackTrace
- override def printStackTrace(printStream: PrintStream) = cause.printStackTrace(printStream)
- override def printStackTrace(printWriter: PrintWriter) = cause.printStackTrace(printWriter)
-}
-
-abstract class RemoteSupport extends ListenerManagement with RemoteServerModule with RemoteClientModule {
-
- lazy val eventHandler: ActorRef = {
- val handler = Actor.actorOf[RemoteEventHandler].start()
- // add the remote client and server listener that pipes the events to the event handler system
- addListener(handler)
- handler
- }
-
- def shutdown() {
- eventHandler.stop()
- removeListener(eventHandler)
- this.shutdownClientModule()
- this.shutdownServerModule()
- clear
- }
-
- /**
- * Creates a Client-managed ActorRef out of the Actor of the specified Class.
- * If the supplied host and port is identical of the configured local node, it will be a local actor
- * <pre>
- * import Actor._
- * val actor = actorOf(classOf[MyActor],"www.akka.io", 2552)
- * actor.start()
- * actor ! message
- * actor.stop()
- * </pre>
- * You can create and start the actor in one statement like this:
- * <pre>
- * val actor = actorOf(classOf[MyActor],"www.akka.io", 2552).start()
- * </pre>
- */
- @deprecated("Will be removed after 1.1", "1.1")
- def actorOf(factory: => Actor, host: String, port: Int): ActorRef =
- Actor.remote.clientManagedActorOf(() => factory, host, port)
-
- /**
- * Creates a Client-managed ActorRef out of the Actor of the specified Class.
- * If the supplied host and port is identical of the configured local node, it will be a local actor
- * <pre>
- * import Actor._
- * val actor = actorOf(classOf[MyActor],"www.akka.io",2552)
- * actor.start()
- * actor ! message
- * actor.stop()
- * </pre>
- * You can create and start the actor in one statement like this:
- * <pre>
- * val actor = actorOf(classOf[MyActor],"www.akka.io",2552).start()
- * </pre>
- */
- @deprecated("Will be removed after 1.1", "1.1")
- def actorOf(clazz: Class[_ <: Actor], host: String, port: Int): ActorRef =
- clientManagedActorOf(() => createActorFromClass(clazz), host, port)
-
- /**
- * Creates a Client-managed ActorRef out of the Actor of the specified Class.
- * If the supplied host and port is identical of the configured local node, it will be a local actor
- * <pre>
- * import Actor._
- * val actor = actorOf[MyActor]("www.akka.io",2552)
- * actor.start()
- * actor ! message
- * actor.stop()
- * </pre>
- * You can create and start the actor in one statement like this:
- * <pre>
- * val actor = actorOf[MyActor]("www.akka.io",2552).start()
- * </pre>
- */
- @deprecated("Will be removed after 1.1", "1.1")
- def actorOf[T <: Actor: ClassTag](host: String, port: Int): ActorRef =
- clientManagedActorOf(() => createActorFromClass(classTag[T].erasure), host, port)
-
- protected def createActorFromClass(clazz: Class[_]): Actor = {
- import ReflectiveAccess.{ createInstance, noParams, noArgs }
- createInstance[Actor](clazz, noParams, noArgs) match {
- case Right(actor) => actor
- case Left(exception) =>
- val cause = exception match {
- case i: InvocationTargetException => i.getTargetException
- case _ => exception
- }
-
- throw new ActorInitializationException(
- "Could not instantiate Actor of " + clazz +
- "\nMake sure Actor is NOT defined inside a class/trait," +
- "\nif so put it outside the class/trait, f.e. in a companion object," +
- "\nOR try to change: 'actorOf[MyActor]' to 'actorOf(new MyActor)'.", cause)
- }
- }
-
- protected override def manageLifeCycleOfListeners = false
- protected[akka] override def notifyListeners(message: => Any): Unit = super.notifyListeners(message)
-
- private[akka] val actors = new ConcurrentHashMap[String, ActorRef]
- private[akka] val actorsByUuid = new ConcurrentHashMap[String, ActorRef]
- private[akka] val actorsFactories = new ConcurrentHashMap[String, () => ActorRef]
- private[akka] val typedActors = new ConcurrentHashMap[String, AnyRef]
- private[akka] val typedActorsByUuid = new ConcurrentHashMap[String, AnyRef]
- private[akka] val typedActorsFactories = new ConcurrentHashMap[String, () => AnyRef]
-
- def clear {
- actors.clear
- actorsByUuid.clear
- typedActors.clear
- typedActorsByUuid.clear
- actorsFactories.clear
- typedActorsFactories.clear
- }
-}
-
-/**
- * This is the interface for the RemoteServer functionality, it's used in Actor.remote
- */
-trait RemoteServerModule extends RemoteModule {
- protected val guard = new ReentrantGuard
-
- /**
- * Signals whether the server is up and running or not
- */
- def isRunning: Boolean
-
- /**
- * Gets the name of the server instance
- */
- def name: String
-
- /**
- * Gets the address of the server instance
- */
- def address: InetSocketAddress
-
- /**
- * Starts the server up
- */
- def start(): RemoteServerModule =
- start(ReflectiveAccess.Remote.configDefaultAddress.getAddress.getHostAddress,
- ReflectiveAccess.Remote.configDefaultAddress.getPort,
- None)
-
- /**
- * Starts the server up
- */
- def start(loader: ClassLoader): RemoteServerModule =
- start(ReflectiveAccess.Remote.configDefaultAddress.getAddress.getHostAddress,
- ReflectiveAccess.Remote.configDefaultAddress.getPort,
- Option(loader))
-
- /**
- * Starts the server up
- */
- def start(host: String, port: Int): RemoteServerModule =
- start(host, port, None)
-
- /**
- * Starts the server up
- */
- def start(host: String, port: Int, loader: ClassLoader): RemoteServerModule =
- start(host, port, Option(loader))
-
- /**
- * Starts the server up
- */
- def start(host: String, port: Int, loader: Option[ClassLoader]): RemoteServerModule
-
- /**
- * Shuts the server down
- */
- def shutdownServerModule(): Unit
-
- /**
- * Register typed actor by interface name.
- */
- def registerTypedActor(intfClass: Class[_], typedActor: AnyRef): Unit = registerTypedActor(intfClass.getName, typedActor)
-
- /**
- * Register remote typed actor by a specific id.
- * @param id custom actor id
- * @param typedActor typed actor to register
- */
- def registerTypedActor(id: String, typedActor: AnyRef): Unit
-
- /**
- * Register typed actor by interface name.
- */
- def registerTypedPerSessionActor(intfClass: Class[_], factory: => AnyRef): Unit = registerTypedActor(intfClass.getName, factory)
-
- /**
- * Register typed actor by interface name.
- * Java API
- */
- def registerTypedPerSessionActor(intfClass: Class[_], factory: Creator[AnyRef]): Unit = registerTypedActor(intfClass.getName, factory)
-
- /**
- * Register remote typed actor by a specific id.
- * @param id custom actor id
- * @param typedActor typed actor to register
- */
- def registerTypedPerSessionActor(id: String, factory: => AnyRef): Unit
-
- /**
- * Register remote typed actor by a specific id.
- * @param id custom actor id
- * @param typedActor typed actor to register
- * Java API
- */
- def registerTypedPerSessionActor(id: String, factory: Creator[AnyRef]): Unit = registerTypedPerSessionActor(id, factory.create)
-
- /**
- * Register Remote Actor by the Actor's 'id' field. It starts the Actor if it is not started already.
- */
- def register(actorRef: ActorRef): Unit = register(actorRef.id, actorRef)
-
- /**
- * Register Remote Actor by the Actor's uuid field. It starts the Actor if it is not started already.
- */
- def registerByUuid(actorRef: ActorRef): Unit
-
- /**
- * Register Remote Actor by a specific 'id' passed as argument. The actor is registered by UUID rather than ID
- * when prefixing the handle with the “uuid:” protocol.
- * <p/>
- * NOTE: If you use this method to register your remote actor then you must unregister the actor by this ID yourself.
- */
- def register(id: String, actorRef: ActorRef): Unit
-
- /**
- * Register Remote Session Actor by a specific 'id' passed as argument.
- * <p/>
- * NOTE: If you use this method to register your remote actor then you must unregister the actor by this ID yourself.
- */
- def registerPerSession(id: String, factory: => ActorRef): Unit
-
- /**
- * Register Remote Session Actor by a specific 'id' passed as argument.
- * <p/>
- * NOTE: If you use this method to register your remote actor then you must unregister the actor by this ID yourself.
- * Java API
- */
- def registerPerSession(id: String, factory: Creator[ActorRef]): Unit = registerPerSession(id, factory.create)
-
- /**
- * Unregister Remote Actor that is registered using its 'id' field (not custom ID).
- */
- def unregister(actorRef: ActorRef): Unit
-
- /**
- * Unregister Remote Actor by specific 'id'.
- * <p/>
- * NOTE: You need to call this method if you have registered an actor by a custom ID.
- */
- def unregister(id: String): Unit
-
- /**
- * Unregister Remote Actor by specific 'id'.
- * <p/>
- * NOTE: You need to call this method if you have registered an actor by a custom ID.
- */
- def unregisterPerSession(id: String): Unit
-
- /**
- * Unregister Remote Typed Actor by specific 'id'.
- * <p/>
- * NOTE: You need to call this method if you have registered an actor by a custom ID.
- */
- def unregisterTypedActor(id: String): Unit
-
- /**
- * Unregister Remote Typed Actor by specific 'id'.
- * <p/>
- * NOTE: You need to call this method if you have registered an actor by a custom ID.
- */
- def unregisterTypedPerSessionActor(id: String): Unit
-}
-
-trait RemoteClientModule extends RemoteModule { self: RemoteModule =>
-
- def actorFor(classNameOrServiceId: String, hostname: String, port: Int): ActorRef =
- actorFor(classNameOrServiceId, classNameOrServiceId, Actor.TIMEOUT, hostname, port, None)
-
- def actorFor(classNameOrServiceId: String, hostname: String, port: Int, loader: ClassLoader): ActorRef =
- actorFor(classNameOrServiceId, classNameOrServiceId, Actor.TIMEOUT, hostname, port, Some(loader))
-
- def actorFor(serviceId: String, className: String, hostname: String, port: Int): ActorRef =
- actorFor(serviceId, className, Actor.TIMEOUT, hostname, port, None)
-
- def actorFor(serviceId: String, className: String, hostname: String, port: Int, loader: ClassLoader): ActorRef =
- actorFor(serviceId, className, Actor.TIMEOUT, hostname, port, Some(loader))
-
- def actorFor(classNameOrServiceId: String, timeout: Long, hostname: String, port: Int): ActorRef =
- actorFor(classNameOrServiceId, classNameOrServiceId, timeout, hostname, port, None)
-
- def actorFor(classNameOrServiceId: String, timeout: Long, hostname: String, port: Int, loader: ClassLoader): ActorRef =
- actorFor(classNameOrServiceId, classNameOrServiceId, timeout, hostname, port, Some(loader))
-
- def actorFor(serviceId: String, className: String, timeout: Long, hostname: String, port: Int): ActorRef =
- actorFor(serviceId, className, timeout, hostname, port, None)
-
- def typedActorFor[T](intfClass: Class[T], serviceIdOrClassName: String, hostname: String, port: Int): T =
- typedActorFor(intfClass, serviceIdOrClassName, serviceIdOrClassName, Actor.TIMEOUT, hostname, port, None)
-
- def typedActorFor[T](intfClass: Class[T], serviceIdOrClassName: String, timeout: Long, hostname: String, port: Int): T =
- typedActorFor(intfClass, serviceIdOrClassName, serviceIdOrClassName, timeout, hostname, port, None)
-
- def typedActorFor[T](intfClass: Class[T], serviceIdOrClassName: String, timeout: Long, hostname: String, port: Int, loader: ClassLoader): T =
- typedActorFor(intfClass, serviceIdOrClassName, serviceIdOrClassName, timeout, hostname, port, Some(loader))
-
- def typedActorFor[T](intfClass: Class[T], serviceId: String, implClassName: String, timeout: Long, hostname: String, port: Int, loader: ClassLoader): T =
- typedActorFor(intfClass, serviceId, implClassName, timeout, hostname, port, Some(loader))
-
- @deprecated("Will be removed after 1.1", "1.1")
- def clientManagedActorOf(factory: () => Actor, host: String, port: Int): ActorRef
-
- /**
- * Clean-up all open connections.
- */
- def shutdownClientModule(): Unit
-
- /**
- * Shuts down a specific client connected to the supplied remote address returns true if successful
- */
- def shutdownClientConnection(address: InetSocketAddress): Boolean
-
- /**
- * Restarts a specific client connected to the supplied remote address, but only if the client is not shut down
- */
- def restartClientConnection(address: InetSocketAddress): Boolean
-
- /** Methods that needs to be implemented by a transport **/
-
- protected[akka] def typedActorFor[T](intfClass: Class[T], serviceId: String, implClassName: String, timeout: Long, host: String, port: Int, loader: Option[ClassLoader]): T
-
- protected[akka] def actorFor(serviceId: String, className: String, timeout: Long, hostname: String, port: Int, loader: Option[ClassLoader]): ActorRef
-
- protected[akka] def send[T](message: Any,
- senderOption: Option[ActorRef],
- senderFuture: Option[CompletableFuture[T]],
- remoteAddress: InetSocketAddress,
- timeout: Long,
- isOneWay: Boolean,
- actorRef: ActorRef,
- typedActorInfo: Option[Tuple2[String, String]],
- actorType: ActorType,
- loader: Option[ClassLoader]): Option[CompletableFuture[T]]
-
- private[akka] def registerSupervisorForActor(actorRef: ActorRef): ActorRef
-
- private[akka] def deregisterSupervisorForActor(actorRef: ActorRef): ActorRef
-
- @deprecated("Will be removed after 1.1", "1.1")
- private[akka] def registerClientManagedActor(hostname: String, port: Int, uuid: Uuid): Unit
-
- @deprecated("Will be removed after 1.1", "1.1")
- private[akka] def unregisterClientManagedActor(hostname: String, port: Int, uuid: Uuid): Unit
-}
diff --git a/test/disabled/presentation/akka/src/akka/routing/Iterators.scala b/test/disabled/presentation/akka/src/akka/routing/Iterators.scala
deleted file mode 100644
index d110f2c269..0000000000
--- a/test/disabled/presentation/akka/src/akka/routing/Iterators.scala
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.routing
-
-import akka.actor.ActorRef
-import scala.collection.convert.wrapAsScala._
-import scala.collection.immutable.Seq
-
-/**
- * An Iterator that is either always empty or yields an infinite number of Ts.
- */
-trait InfiniteIterator[T] extends Iterator[T] {
- val items: Seq[T]
-}
-
-/**
- * CyclicIterator is a round-robin style InfiniteIterator that cycles the supplied List.
- */
-case class CyclicIterator[T](val items: Seq[T]) extends InfiniteIterator[T] {
- def this(items: java.util.List[T]) = this(items.toList)
-
- @volatile
- private[this] var current: Seq[T] = items
-
- def hasNext = items != Nil
-
- def next = {
- val nc = if (current == Nil) items else current
- current = nc.tail
- nc.head
- }
-
- override def exists(f: T => Boolean): Boolean = items.exists(f)
-}
-
-/**
- * This InfiniteIterator always returns the Actor that has the currently smallest mailbox
- * useful for work-stealing.
- */
-case class SmallestMailboxFirstIterator(val items: Seq[ActorRef]) extends InfiniteIterator[ActorRef] {
- def this(items: java.util.List[ActorRef]) = this(items.toList)
- def hasNext = items != Nil
-
- def next = items.reduceLeft((a1, a2) => if (a1.mailboxSize < a2.mailboxSize) a1 else a2)
-
- override def exists(f: ActorRef => Boolean): Boolean = items.exists(f)
-}
diff --git a/test/disabled/presentation/akka/src/akka/routing/Listeners.scala b/test/disabled/presentation/akka/src/akka/routing/Listeners.scala
deleted file mode 100644
index d8a537731d..0000000000
--- a/test/disabled/presentation/akka/src/akka/routing/Listeners.scala
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.routing
-
-import akka.actor.{ Actor, ActorRef }
-import java.util.concurrent.ConcurrentSkipListSet
-import scala.collection.convert.wrapAsScala._
-
-sealed trait ListenerMessage
-case class Listen(listener: ActorRef) extends ListenerMessage
-case class Deafen(listener: ActorRef) extends ListenerMessage
-case class WithListeners(f: (ActorRef) => Unit) extends ListenerMessage
-
-/**
- * Listeners is a generic trait to implement listening capability on an Actor.
- * <p/>
- * Use the <code>gossip(msg)</code> method to have it sent to the listeners.
- * <p/>
- * Send <code>Listen(self)</code> to start listening.
- * <p/>
- * Send <code>Deafen(self)</code> to stop listening.
- * <p/>
- * Send <code>WithListeners(fun)</code> to traverse the current listeners.
- */
-trait Listeners { self: Actor =>
- private val listeners = new ConcurrentSkipListSet[ActorRef]
-
- protected def listenerManagement: Receive = {
- case Listen(l) => listeners add l
- case Deafen(l) => listeners remove l
- case WithListeners(f) => listeners foreach f
- }
-
- protected def gossip(msg: Any) = listeners foreach (_ ! msg)
-}
diff --git a/test/disabled/presentation/akka/src/akka/routing/Pool.scala b/test/disabled/presentation/akka/src/akka/routing/Pool.scala
deleted file mode 100644
index d972bb84c8..0000000000
--- a/test/disabled/presentation/akka/src/akka/routing/Pool.scala
+++ /dev/null
@@ -1,292 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.routing
-
-import akka.actor.{ Actor, ActorRef, PoisonPill }
-import java.util.concurrent.TimeUnit
-
-/**
- * Actor pooling
- *
- * An actor pool is an message router for a set of delegate actors. The pool is an actor itself.
- * There are a handful of basic concepts that need to be understood when working with and defining your pool.
- *
- * Selectors - A selector is a trait that determines how and how many pooled actors will receive an incoming message.
- * Capacitors - A capacitor is a trait that influences the size of pool. There are effectively two types.
- * The first determines the size itself - either fixed or bounded.
- * The second determines how to adjust of the pool according to some internal pressure characteristic.
- * Filters - A filter can be used to refine the raw pressure value returned from a capacitor.
- *
- * It should be pointed out that all actors in the pool are treated as essentially equivalent. This is not to say
- * that one couldn't instance different classes within the pool, only that the pool, when selecting and routing,
- * will not take any type information into consideration.
- *
- * @author Garrick Evans
- */
-
-object ActorPool {
- case object Stat
- case class Stats(size: Int)
-}
-
-/**
- * Defines the nature of an actor pool.
- */
-trait ActorPool {
- def instance(): ActorRef //Question, Instance of what?
- def capacity(delegates: Seq[ActorRef]): Int //Question, What is the semantics of this return value?
- def select(delegates: Seq[ActorRef]): Tuple2[Iterator[ActorRef], Int] //Question, Why does select return this instead of an ordered Set?
-}
-
-/**
- * A default implementation of a pool, on each message to route,
- * - checks the current capacity and adjusts accordingly if needed
- * - routes the incoming message to a selection set of delegate actors
- */
-trait DefaultActorPool extends ActorPool { this: Actor =>
- import ActorPool._
- import collection.mutable.LinkedList
- import akka.actor.MaximumNumberOfRestartsWithinTimeRangeReached
-
- protected var _delegates = Vector[ActorRef]()
- private var _lastCapacityChange = 0
- private var _lastSelectorCount = 0
-
- override def postStop() = _delegates foreach { delegate =>
- try {
- delegate ! PoisonPill
- } catch { case e: Exception => } //Ignore any exceptions here
- }
-
- protected def _route(): Receive = {
- // for testing...
- case Stat =>
- self reply_? Stats(_delegates length)
- case max: MaximumNumberOfRestartsWithinTimeRangeReached =>
- _delegates = _delegates filterNot { _.uuid == max.victim.uuid }
- case msg =>
- resizeIfAppropriate()
-
- select(_delegates) match {
- case (selectedDelegates, count) =>
- _lastSelectorCount = count
- selectedDelegates foreach { _ forward msg } //Should we really send the same message to several actors?
- }
- }
-
- private def resizeIfAppropriate() {
- val requestedCapacity = capacity(_delegates)
- val newDelegates = requestedCapacity match {
- case qty if qty > 0 =>
- _delegates ++ {
- for (i ← 0 until requestedCapacity) yield {
- val delegate = instance()
- self startLink delegate
- delegate
- }
- }
- case qty if qty < 0 =>
- _delegates.splitAt(_delegates.length + requestedCapacity) match {
- case (keep, abandon) =>
- abandon foreach { _ ! PoisonPill }
- keep
- }
- case _ => _delegates //No change
- }
-
- _lastCapacityChange = requestedCapacity
- _delegates = newDelegates
- }
-}
-
-/**
- * Selectors
- * These traits define how, when a message needs to be routed, delegate(s) are chosen from the pool
- */
-
-/**
- * Returns the set of delegates with the least amount of message backlog.
- */
-trait SmallestMailboxSelector {
- def selectionCount: Int
- def partialFill: Boolean
-
- def select(delegates: Seq[ActorRef]): Tuple2[Iterator[ActorRef], Int] = {
- var set: Seq[ActorRef] = Nil
- var take = if (partialFill) math.min(selectionCount, delegates.length) else selectionCount
-
- while (take > 0) {
- set = delegates.sortWith(_.mailboxSize < _.mailboxSize).take(take) ++ set //Question, doesn't this risk selecting the same actor multiple times?
- take -= set.size
- }
-
- (set.iterator, set.size)
- }
-}
-
-/**
- * Returns the set of delegates that occur sequentially 'after' the last delegate from the previous selection
- */
-trait RoundRobinSelector {
- private var _last: Int = -1;
-
- def selectionCount: Int
- def partialFill: Boolean
-
- def select(delegates: Seq[ActorRef]): Tuple2[Iterator[ActorRef], Int] = {
- val length = delegates.length
- val take = if (partialFill) math.min(selectionCount, length)
- else selectionCount
-
- val set =
- for (i ← 0 until take) yield {
- _last = (_last + 1) % length
- delegates(_last)
- }
-
- (set.iterator, set.size)
- }
-}
-
-/**
- * Capacitors
- * These traits define how to alter the size of the pool
- */
-
-/**
- * Ensures a fixed number of delegates in the pool
- */
-trait FixedSizeCapacitor {
- def limit: Int
- def capacity(delegates: Seq[ActorRef]): Int = (limit - delegates.size) max 0
-}
-
-/**
- * Constrains the pool capacity to a bounded range
- */
-trait BoundedCapacitor {
- def lowerBound: Int
- def upperBound: Int
-
- def capacity(delegates: Seq[ActorRef]): Int = {
- val current = delegates length
- val delta = _eval(delegates)
- val proposed = current + delta
-
- if (proposed < lowerBound) delta + (lowerBound - proposed)
- else if (proposed > upperBound) delta - (proposed - upperBound)
- else delta
- }
-
- protected def _eval(delegates: Seq[ActorRef]): Int
-}
-
-/**
- * Returns the number of delegates required to manage the current message backlogs
- */
-trait MailboxPressureCapacitor {
- def pressureThreshold: Int
- def pressure(delegates: Seq[ActorRef]): Int =
- delegates count { _.mailboxSize > pressureThreshold }
-}
-
-/**
- * Returns the number of delegates required to respond to the number of pending futures
- */
-trait ActiveFuturesPressureCapacitor {
- def pressure(delegates: Seq[ActorRef]): Int =
- delegates count { _.senderFuture.isDefined }
-}
-
-/**
- */
-trait CapacityStrategy {
- import ActorPool._
-
- def pressure(delegates: Seq[ActorRef]): Int
- def filter(pressure: Int, capacity: Int): Int
-
- protected def _eval(delegates: Seq[ActorRef]): Int = filter(pressure(delegates), delegates.size)
-}
-
-trait FixedCapacityStrategy extends FixedSizeCapacitor
-trait BoundedCapacityStrategy extends CapacityStrategy with BoundedCapacitor
-
-/**
- * Filters
- * These traits refine the raw pressure reading into a more appropriate capacity delta.
- */
-
-/**
- * The basic filter trait that composes ramp-up and back-off subfiltering.
- */
-trait Filter {
- def rampup(pressure: Int, capacity: Int): Int
- def backoff(pressure: Int, capacity: Int): Int
-
- // pass through both filters just to be sure any internal counters
- // are updated consistently. ramping up is always + and backing off
- // is always - and each should return 0 otherwise...
- def filter(pressure: Int, capacity: Int): Int =
- rampup(pressure, capacity) + backoff(pressure, capacity)
-}
-
-trait BasicFilter extends Filter with BasicRampup with BasicBackoff
-
-/**
- * Filter performs steady incremental growth using only the basic ramp-up subfilter
- */
-trait BasicNoBackoffFilter extends BasicRampup {
- def filter(pressure: Int, capacity: Int): Int = rampup(pressure, capacity)
-}
-
-/**
- * Basic incremental growth as a percentage of the current pool capacity
- */
-trait BasicRampup {
- def rampupRate: Double
-
- def rampup(pressure: Int, capacity: Int): Int =
- if (pressure < capacity) 0 else math.ceil(rampupRate * capacity) toInt
-}
-
-/**
- * Basic decrement as a percentage of the current pool capacity
- */
-trait BasicBackoff {
- def backoffThreshold: Double
- def backoffRate: Double
-
- def backoff(pressure: Int, capacity: Int): Int =
- if (capacity > 0 && pressure / capacity < backoffThreshold) math.ceil(-1.0 * backoffRate * capacity) toInt else 0
-}
-/**
- * This filter tracks the average pressure over the lifetime of the pool (or since last reset) and
- * will begin to reduce capacity once this value drops below the provided threshold. The number of
- * delegates to cull from the pool is determined by some scaling factor (the backoffRate) multiplied
- * by the difference in capacity and pressure.
- */
-trait RunningMeanBackoff {
- def backoffThreshold: Double
- def backoffRate: Double
-
- private var _pressure: Double = 0.0
- private var _capacity: Double = 0.0
-
- def backoff(pressure: Int, capacity: Int): Int = {
- _pressure += pressure
- _capacity += capacity
-
- if (capacity > 0 && pressure / capacity < backoffThreshold
- && _capacity > 0 && _pressure / _capacity < backoffThreshold) //Why does the entire clause need to be true?
- math.floor(-1.0 * backoffRate * (capacity - pressure)).toInt
- else 0
- }
-
- def backoffReset {
- _pressure = 0.0
- _capacity = 0.0
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/routing/Routers.scala b/test/disabled/presentation/akka/src/akka/routing/Routers.scala
deleted file mode 100644
index a4c34c5c67..0000000000
--- a/test/disabled/presentation/akka/src/akka/routing/Routers.scala
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.routing
-
-import akka.actor.{ UntypedActor, Actor, ActorRef }
-
-/**
- * A Dispatcher is a trait whose purpose is to route incoming messages to actors.
- */
-trait Dispatcher { this: Actor =>
-
- protected def transform(msg: Any): Any = msg
-
- protected def routes: PartialFunction[Any, ActorRef]
-
- protected def broadcast(message: Any) {}
-
- protected def dispatch: Receive = {
- case Routing.Broadcast(message) =>
- broadcast(message)
- case a if routes.isDefinedAt(a) =>
- if (isSenderDefined) routes(a).forward(transform(a))(someSelf)
- else routes(a).!(transform(a))(None)
- }
-
- def receive = dispatch
-
- private def isSenderDefined = self.senderFuture.isDefined || self.sender.isDefined
-}
-
-/**
- * An UntypedDispatcher is an abstract class whose purpose is to route incoming messages to actors.
- */
-abstract class UntypedDispatcher extends UntypedActor {
- protected def transform(msg: Any): Any = msg
-
- protected def route(msg: Any): ActorRef
-
- protected def broadcast(message: Any) {}
-
- private def isSenderDefined = self.senderFuture.isDefined || self.sender.isDefined
-
- @throws(classOf[Exception])
- def onReceive(msg: Any): Unit = {
- if (msg.isInstanceOf[Routing.Broadcast]) broadcast(msg.asInstanceOf[Routing.Broadcast].message)
- else {
- val r = route(msg)
- if (r eq null) throw new IllegalStateException("No route for " + msg + " defined!")
- if (isSenderDefined) r.forward(transform(msg))(someSelf)
- else r.!(transform(msg))(None)
- }
- }
-}
-
-/**
- * A LoadBalancer is a specialized kind of Dispatcher, that is supplied an InfiniteIterator of targets
- * to dispatch incoming messages to.
- */
-trait LoadBalancer extends Dispatcher { self: Actor =>
- protected def seq: InfiniteIterator[ActorRef]
-
- protected def routes = {
- case x if seq.hasNext => seq.next
- }
-
- override def broadcast(message: Any) = seq.items.foreach(_ ! message)
-
- override def isDefinedAt(msg: Any) = seq.exists(_.isDefinedAt(msg))
-}
-
-/**
- * A UntypedLoadBalancer is a specialized kind of UntypedDispatcher, that is supplied an InfiniteIterator of targets
- * to dispatch incoming messages to.
- */
-abstract class UntypedLoadBalancer extends UntypedDispatcher {
- protected def seq: InfiniteIterator[ActorRef]
-
- protected def route(msg: Any) =
- if (seq.hasNext) seq.next
- else null
-
- override def broadcast(message: Any) = seq.items.foreach(_ ! message)
-
- override def isDefinedAt(msg: Any) = seq.exists(_.isDefinedAt(msg))
-}
diff --git a/test/disabled/presentation/akka/src/akka/routing/Routing.scala b/test/disabled/presentation/akka/src/akka/routing/Routing.scala
deleted file mode 100644
index befc124248..0000000000
--- a/test/disabled/presentation/akka/src/akka/routing/Routing.scala
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.routing
-
-import akka.actor.{ Actor, ActorRef }
-import akka.actor.Actor._
-
-object Routing {
-
- sealed trait RoutingMessage
- case class Broadcast(message: Any) extends RoutingMessage
-
- type PF[A, B] = PartialFunction[A, B]
-
- /**
- * Creates a new PartialFunction whose isDefinedAt is a combination
- * of the two parameters, and whose apply is first to call filter.apply
- * and then filtered.apply.
- */
- def filter[A, B](filter: PF[A, Unit], filtered: PF[A, B]): PF[A, B] = {
- case a: A if filtered.isDefinedAt(a) && filter.isDefinedAt(a) =>
- filter(a)
- filtered(a)
- }
-
- /**
- * Interceptor is a filter(x,y) where x.isDefinedAt is considered to be always true.
- */
- def intercept[A, B](interceptor: (A) => Unit, interceptee: PF[A, B]): PF[A, B] =
- filter({ case a if a.isInstanceOf[A] => interceptor(a) }, interceptee)
-
- /**
- * Creates a LoadBalancer from the thunk-supplied InfiniteIterator.
- */
- def loadBalancerActor(actors: => InfiniteIterator[ActorRef]): ActorRef =
- actorOf(new Actor with LoadBalancer {
- val seq = actors
- }).start()
-
- /**
- * Creates a Dispatcher given a routing and a message-transforming function.
- */
- def dispatcherActor(routing: PF[Any, ActorRef], msgTransformer: (Any) => Any): ActorRef =
- actorOf(new Actor with Dispatcher {
- override def transform(msg: Any) = msgTransformer(msg)
- def routes = routing
- }).start()
-
- /**
- * Creates a Dispatcher given a routing.
- */
- def dispatcherActor(routing: PF[Any, ActorRef]): ActorRef = actorOf(new Actor with Dispatcher {
- def routes = routing
- }).start()
-
- /**
- * Creates an actor that pipes all incoming messages to
- * both another actor and through the supplied function
- */
- def loggerActor(actorToLog: ActorRef, logger: (Any) => Unit): ActorRef =
- dispatcherActor({ case _ => actorToLog }, logger)
-}
diff --git a/test/disabled/presentation/akka/src/akka/util/Address.scala b/test/disabled/presentation/akka/src/akka/util/Address.scala
deleted file mode 100644
index 65b5c0a834..0000000000
--- a/test/disabled/presentation/akka/src/akka/util/Address.scala
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-package akka.util
-
-import java.net.InetSocketAddress
-
-object Address {
- def apply(hostname: String, port: Int) = new Address(hostname, port)
- def apply(inetAddress: InetSocketAddress): Address = inetAddress match {
- case null => null
- case inet => new Address(inet.getAddress.getHostAddress, inet.getPort)
- }
-}
-
-class Address(val hostname: String, val port: Int) {
- override val hashCode: Int = {
- var result = HashCode.SEED
- result = HashCode.hash(result, hostname)
- result = HashCode.hash(result, port)
- result
- }
-
- override def equals(that: Any): Boolean = {
- that.isInstanceOf[Address] &&
- that.asInstanceOf[Address].hostname == hostname &&
- that.asInstanceOf[Address].port == port
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/util/AkkaLoader.scala b/test/disabled/presentation/akka/src/akka/util/AkkaLoader.scala
deleted file mode 100644
index cb246f2ecf..0000000000
--- a/test/disabled/presentation/akka/src/akka/util/AkkaLoader.scala
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.util
-
-import akka.config.Config
-import akka.actor.Actor
-
-/*
- * This class is responsible for booting up a stack of bundles and then shutting them down
- */
-class AkkaLoader {
- private val hasBooted = new Switch(false)
-
- @volatile
- private var _bundles: Option[Bootable] = None
-
- def bundles = _bundles;
-
- /*
- * Boot initializes the specified bundles
- */
- def boot(withBanner: Boolean, b: Bootable): Unit = hasBooted switchOn {
- if (withBanner) printBanner()
- println("Starting Akka...")
- b.onLoad
- Thread.currentThread.setContextClassLoader(getClass.getClassLoader)
- _bundles = Some(b)
- println("Akka started successfully")
- }
-
- /*
- * Shutdown, well, shuts down the bundles used in boot
- */
- def shutdown() {
- hasBooted switchOff {
- println("Shutting down Akka...")
- _bundles.foreach(_.onUnload)
- _bundles = None
- Actor.shutdownHook.run
- println("Akka succesfully shut down")
- }
- }
-
- private def printBanner() {
- println("""
-==============================================================================
-
- ZZ:
- ZZZZ
- ZZZZZZ
- ZZZ' ZZZ
- ~7 7ZZ' ZZZ
- :ZZZ: IZZ' ZZZ
- ,OZZZZ.~ZZ? ZZZ
- ZZZZ' 'ZZZ$ ZZZ
- . $ZZZ ~ZZ$ ZZZ
- .=Z?. .ZZZO ~ZZ7 OZZ
- .ZZZZ7..:ZZZ~ 7ZZZ ZZZ~
- .$ZZZ$Z+.ZZZZ ZZZ: ZZZ$
- .,ZZZZ?' =ZZO= .OZZ 'ZZZ
- .$ZZZZ+ .ZZZZ IZZZ ZZZ$
- .ZZZZZ' .ZZZZ' .ZZZ$ ?ZZZ
- .ZZZZZZ' .OZZZ? ?ZZZ 'ZZZ$
- .?ZZZZZZ' .ZZZZ? .ZZZ? 'ZZZO
- .+ZZZZZZ?' .7ZZZZ' .ZZZZ :ZZZZ
- .ZZZZZZ$' .?ZZZZZ' .~ZZZZ 'ZZZZ.
-
-
- NNNNN $NNNN+
- NNNNN $NNNN+
- NNNNN $NNNN+
- NNNNN $NNNN+
- NNNNN $NNNN+
- =NNNNNNNNND$ NNNNN DDDDDD: $NNNN+ DDDDDN NDDNNNNNNNN,
- NNNNNNNNNNNNND NNNNN DNNNNN $NNNN+ 8NNNNN= :NNNNNNNNNNNNNN
- NNNNN$ DNNNNN NNNNN $NNNNN~ $NNNN+ NNNNNN NNNNN, :NNNNN+
- ?DN~ NNNNN NNNNN MNNNNN $NNNN+:NNNNN7 $ND =NNNNN
- DNNNNN NNNNNDNNNN$ $NNNNDNNNNN :DNNNNN
- ZNDNNNNNNNNND NNNNNNNNNND, $NNNNNNNNNNN DNDNNNNNNNNNN
- NNNNNNNDDINNNNN NNNNNNNNNNND $NNNNNNNNNNND ONNNNNNND8+NNNNN
- :NNNND NNNNN NNNNNN DNNNN, $NNNNNO 7NNNND NNNNNO :NNNNN
- DNNNN NNNNN NNNNN DNNNN $NNNN+ 8NNNNN NNNNN $NNNNN
- DNNNNO NNNNNN NNNNN NNNNN $NNNN+ NNNNN$ NNNND, ,NNNNND
- NNNNNNDDNNNNNNNN NNNNN =NNNNN $NNNN+ DNNNN? DNNNNNNDNNNNNNNND
- NNNNNNNNN NNNN$ NNNNN 8NNNND $NNNN+ NNNNN= ,DNNNNNNND NNNNN$
-
-==============================================================================
- Running version %s
-==============================================================================
-""".format(Config.VERSION))
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/util/Bootable.scala b/test/disabled/presentation/akka/src/akka/util/Bootable.scala
deleted file mode 100644
index d07643e1ac..0000000000
--- a/test/disabled/presentation/akka/src/akka/util/Bootable.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.util
-
-trait Bootable {
- def onLoad() {}
- def onUnload() {}
-}
diff --git a/test/disabled/presentation/akka/src/akka/util/BoundedBlockingQueue.scala b/test/disabled/presentation/akka/src/akka/util/BoundedBlockingQueue.scala
deleted file mode 100644
index f8deda746c..0000000000
--- a/test/disabled/presentation/akka/src/akka/util/BoundedBlockingQueue.scala
+++ /dev/null
@@ -1,326 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.util
-
-import java.util.concurrent.locks.ReentrantLock
-import java.util.concurrent.{ TimeUnit, BlockingQueue }
-import java.util.{ AbstractQueue, Queue, Collection, Iterator }
-
-class BoundedBlockingQueue[E <: AnyRef](
- val maxCapacity: Int, private val backing: Queue[E]) extends AbstractQueue[E] with BlockingQueue[E] {
-
- backing match {
- case null => throw new IllegalArgumentException("Backing Queue may not be null")
- case b: BlockingQueue[_] =>
- require(maxCapacity > 0)
- require(b.size() == 0)
- require(b.remainingCapacity >= maxCapacity)
- case b: Queue[_] =>
- require(b.size() == 0)
- require(maxCapacity > 0)
- }
-
- protected val lock = new ReentrantLock(false)
-
- private val notEmpty = lock.newCondition()
- private val notFull = lock.newCondition()
-
- def put(e: E): Unit = { //Blocks until not full
- if (e eq null) throw new NullPointerException
- lock.lock()
- try {
- while (backing.size() == maxCapacity)
- notFull.await()
- require(backing.offer(e))
- notEmpty.signal()
- } finally {
- lock.unlock()
- }
- }
-
- def take(): E = { //Blocks until not empty
- lock.lockInterruptibly()
- try {
- while (backing.size() == 0)
- notEmpty.await()
- val e = backing.poll()
- require(e ne null)
- notFull.signal()
- e
- } finally {
- lock.unlock()
- }
- }
-
- def offer(e: E): Boolean = { //Tries to do it immediately, if fail return false
- if (e eq null) throw new NullPointerException
- lock.lock()
- try {
- if (backing.size() == maxCapacity) false
- else {
- require(backing.offer(e)) //Should never fail
- notEmpty.signal()
- true
- }
- } finally {
- lock.unlock()
- }
- }
-
- def offer(e: E, timeout: Long, unit: TimeUnit): Boolean = { //Tries to do it within the timeout, return false if fail
- if (e eq null) throw new NullPointerException
- var nanos = unit.toNanos(timeout)
- lock.lockInterruptibly()
- try {
- while (backing.size() == maxCapacity) {
- if (nanos <= 0)
- return false
- else
- nanos = notFull.awaitNanos(nanos)
- }
- require(backing.offer(e)) //Should never fail
- notEmpty.signal()
- true
- } finally {
- lock.unlock()
- }
- }
-
- def poll(timeout: Long, unit: TimeUnit): E = { //Tries to do it within the timeout, returns null if fail
- var nanos = unit.toNanos(timeout)
- lock.lockInterruptibly()
- try {
- var result: E = null.asInstanceOf[E]
- var hasResult = false
- while (!hasResult) {
- hasResult = backing.poll() match {
- case null if nanos <= 0 =>
- result = null.asInstanceOf[E]
- true
- case null =>
- try {
- nanos = notEmpty.awaitNanos(nanos)
- } catch {
- case ie: InterruptedException =>
- notEmpty.signal()
- throw ie
- }
- false
- case e =>
- notFull.signal()
- result = e
- true
- }
- }
- result
- } finally {
- lock.unlock()
- }
- }
-
- def poll(): E = { //Tries to remove the head of the queue immediately, if fail, return null
- lock.lock()
- try {
- backing.poll() match {
- case null => null.asInstanceOf[E]
- case e =>
- notFull.signal()
- e
- }
- } finally {
- lock.unlock
- }
- }
-
- override def remove(e: AnyRef): Boolean = { //Tries to do it immediately, if fail, return false
- if (e eq null) throw new NullPointerException
- lock.lock()
- try {
- if (backing remove e) {
- notFull.signal()
- true
- } else false
- } finally {
- lock.unlock()
- }
- }
-
- override def contains(e: AnyRef): Boolean = {
- if (e eq null) throw new NullPointerException
- lock.lock()
- try {
- backing contains e
- } finally {
- lock.unlock()
- }
- }
-
- override def clear(): Unit = {
- lock.lock()
- try {
- backing.clear
- } finally {
- lock.unlock()
- }
- }
-
- def remainingCapacity(): Int = {
- lock.lock()
- try {
- maxCapacity - backing.size()
- } finally {
- lock.unlock()
- }
- }
-
- def size(): Int = {
- lock.lock()
- try {
- backing.size()
- } finally {
- lock.unlock()
- }
- }
-
- def peek(): E = {
- lock.lock()
- try {
- backing.peek()
- } finally {
- lock.unlock()
- }
- }
-
- def drainTo(c: Collection[_ >: E]): Int = drainTo(c, Int.MaxValue)
-
- def drainTo(c: Collection[_ >: E], maxElements: Int): Int = {
- if (c eq null) throw new NullPointerException
- if (c eq this) throw new IllegalArgumentException
- if (maxElements <= 0) 0
- else {
- lock.lock()
- try {
- var n = 0
- var e: E = null.asInstanceOf[E]
- while (n < maxElements) {
- backing.poll() match {
- case null => return n
- case e =>
- c add e
- n += 1
- }
- }
- n
- } finally {
- lock.unlock()
- }
- }
- }
-
- override def containsAll(c: Collection[_]): Boolean = {
- lock.lock()
- try {
- backing containsAll c
- } finally {
- lock.unlock()
- }
- }
-
- override def removeAll(c: Collection[_]): Boolean = {
- lock.lock()
- try {
- if (backing.removeAll(c)) {
- val sz = backing.size()
- if (sz < maxCapacity) notFull.signal()
- if (sz > 0) notEmpty.signal() //FIXME needed?
- true
- } else false
- } finally {
- lock.unlock()
- }
- }
-
- override def retainAll(c: Collection[_]): Boolean = {
- lock.lock()
- try {
- if (backing.retainAll(c)) {
- val sz = backing.size()
- if (sz < maxCapacity) notFull.signal() //FIXME needed?
- if (sz > 0) notEmpty.signal()
- true
- } else false
- } finally {
- lock.unlock()
- }
- }
-
- def iterator(): Iterator[E] = {
- lock.lock
- try {
- val elements = backing.toArray
- new Iterator[E] {
- var at = 0
- var last = -1
-
- def hasNext(): Boolean = at < elements.length
-
- def next(): E = {
- if (at >= elements.length) throw new NoSuchElementException
- last = at
- at += 1
- elements(last).asInstanceOf[E]
- }
-
- def remove(): Unit = {
- if (last < 0) throw new IllegalStateException
- val target = elements(last)
- last = -1 //To avoid 2 subsequent removes without a next in between
- lock.lock()
- try {
- val i = backing.iterator()
- while (i.hasNext) {
- if (i.next eq target) {
- i.remove()
- notFull.signal()
- return ()
- }
- }
- } finally {
- lock.unlock()
- }
- }
- }
- } finally {
- lock.unlock
- }
- }
-
- override def toArray(): Array[AnyRef] = {
- lock.lock()
- try {
- backing.toArray
- } finally {
- lock.unlock()
- }
- }
-
- override def isEmpty(): Boolean = {
- lock.lock()
- try {
- backing.isEmpty()
- } finally {
- lock.unlock()
- }
- }
-
- override def toArray[X](a: Array[X with AnyRef]) = {
- lock.lock()
- try {
- backing.toArray[X](a)
- } finally {
- lock.unlock()
- }
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/util/Crypt.scala b/test/disabled/presentation/akka/src/akka/util/Crypt.scala
deleted file mode 100644
index 3ce2d559a2..0000000000
--- a/test/disabled/presentation/akka/src/akka/util/Crypt.scala
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.util
-
-import java.security.{ MessageDigest, SecureRandom }
-
-/**
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-object Crypt {
- val hex = "0123456789ABCDEF"
- val lineSeparator = System.getProperty("line.separator")
-
- lazy val random = SecureRandom.getInstance("SHA1PRNG")
-
- def md5(text: String): String = md5(unifyLineSeparator(text).getBytes("ASCII"))
-
- def md5(bytes: Array[Byte]): String = digest(bytes, MessageDigest.getInstance("MD5"))
-
- def sha1(text: String): String = sha1(unifyLineSeparator(text).getBytes("ASCII"))
-
- def sha1(bytes: Array[Byte]): String = digest(bytes, MessageDigest.getInstance("SHA1"))
-
- def generateSecureCookie: String = {
- val bytes = Array.fill(32)(0.byteValue)
- random.nextBytes(bytes)
- sha1(bytes)
- }
-
- def digest(bytes: Array[Byte], md: MessageDigest): String = {
- md.update(bytes)
- hexify(md.digest)
- }
-
- def hexify(bytes: Array[Byte]): String = {
- val builder = new StringBuilder
- bytes.foreach { byte => builder.append(hex.charAt((byte & 0xF) >> 4)).append(hex.charAt(byte & 0xF)) }
- builder.toString
- }
-
- private def unifyLineSeparator(text: String): String = text.replaceAll(lineSeparator, "\n")
-}
diff --git a/test/disabled/presentation/akka/src/akka/util/Duration.scala b/test/disabled/presentation/akka/src/akka/util/Duration.scala
deleted file mode 100644
index 316cb86689..0000000000
--- a/test/disabled/presentation/akka/src/akka/util/Duration.scala
+++ /dev/null
@@ -1,437 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.util
-
-import java.util.concurrent.TimeUnit
-import TimeUnit._
-import java.lang.{ Long => JLong, Double => JDouble }
-
-object Duration {
- def apply(length: Long, unit: TimeUnit): Duration = new FiniteDuration(length, unit)
- def apply(length: Double, unit: TimeUnit): Duration = fromNanos(unit.toNanos(1) * length)
- def apply(length: Long, unit: String): Duration = new FiniteDuration(length, timeUnit(unit))
-
- def fromNanos(nanos: Long): Duration = {
- if (nanos % 86400000000000L == 0) {
- Duration(nanos / 86400000000000L, DAYS)
- } else if (nanos % 3600000000000L == 0) {
- Duration(nanos / 3600000000000L, HOURS)
- } else if (nanos % 60000000000L == 0) {
- Duration(nanos / 60000000000L, MINUTES)
- } else if (nanos % 1000000000L == 0) {
- Duration(nanos / 1000000000L, SECONDS)
- } else if (nanos % 1000000L == 0) {
- Duration(nanos / 1000000L, MILLISECONDS)
- } else if (nanos % 1000L == 0) {
- Duration(nanos / 1000L, MICROSECONDS)
- } else {
- Duration(nanos, NANOSECONDS)
- }
- }
-
- def fromNanos(nanos: Double): Duration = fromNanos((nanos + 0.5).asInstanceOf[Long])
-
- /**
- * Construct a Duration by parsing a String. In case of a format error, a
- * RuntimeException is thrown. See `unapply(String)` for more information.
- */
- def apply(s: String): Duration = unapply(s) getOrElse sys.error("format error")
-
- /**
- * Deconstruct a Duration into length and unit if it is finite.
- */
- def unapply(d: Duration): Option[(Long, TimeUnit)] = {
- if (d.finite_?) {
- Some((d.length, d.unit))
- } else {
- None
- }
- }
-
- private val RE = ("""^\s*(\d+(?:\.\d+)?)\s*""" + // length part
- "(?:" + // units are distinguished in separate match groups
- "(d|day|days)|" +
- "(h|hour|hours)|" +
- "(min|minute|minutes)|" +
- "(s|sec|second|seconds)|" +
- "(ms|milli|millis|millisecond|milliseconds)|" +
- "(µs|micro|micros|microsecond|microseconds)|" +
- "(ns|nano|nanos|nanosecond|nanoseconds)" +
- """)\s*$""").r // close the non-capturing group
- private val REinf = """^\s*Inf\s*$""".r
- private val REminf = """^\s*(?:-\s*|Minus)Inf\s*""".r
-
- /**
- * Parse String, return None if no match. Format is `"<length><unit>"`, where
- * whitespace is allowed before, between and after the parts. Infinities are
- * designated by `"Inf"` and `"-Inf"` or `"MinusInf"`.
- */
- def unapply(s: String): Option[Duration] = s match {
- case RE(length, d, h, m, s, ms, mus, ns) =>
- if (d ne null) Some(Duration(JDouble.parseDouble(length), DAYS)) else if (h ne null) Some(Duration(JDouble.parseDouble(length), HOURS)) else if (m ne null) Some(Duration(JDouble.parseDouble(length), MINUTES)) else if (s ne null) Some(Duration(JDouble.parseDouble(length), SECONDS)) else if (ms ne null) Some(Duration(JDouble.parseDouble(length), MILLISECONDS)) else if (mus ne null) Some(Duration(JDouble.parseDouble(length), MICROSECONDS)) else if (ns ne null) Some(Duration(JDouble.parseDouble(length), NANOSECONDS)) else
- sys.error("made some error in regex (should not be possible)")
- case REinf() => Some(Inf)
- case REminf() => Some(MinusInf)
- case _ => None
- }
-
- /**
- * Parse TimeUnit from string representation.
- */
- def timeUnit(unit: String) = unit.toLowerCase match {
- case "d" | "day" | "days" => DAYS
- case "h" | "hour" | "hours" => HOURS
- case "min" | "minute" | "minutes" => MINUTES
- case "s" | "sec" | "second" | "seconds" => SECONDS
- case "ms" | "milli" | "millis" | "millisecond" | "milliseconds" => MILLISECONDS
- case "µs" | "micro" | "micros" | "microsecond" | "microseconds" => MICROSECONDS
- case "ns" | "nano" | "nanos" | "nanosecond" | "nanoseconds" => NANOSECONDS
- }
-
- val Zero: Duration = new FiniteDuration(0, NANOSECONDS)
-
- trait Infinite {
- this: Duration =>
-
- override def equals(other: Any) = false
-
- def +(other: Duration): Duration =
- other match {
- case _: this.type => this
- case _: Infinite => throw new IllegalArgumentException("illegal addition of infinities")
- case _ => this
- }
- def -(other: Duration): Duration =
- other match {
- case _: this.type => throw new IllegalArgumentException("illegal subtraction of infinities")
- case _ => this
- }
- def *(factor: Double): Duration = this
- def /(factor: Double): Duration = this
- def /(other: Duration): Double =
- other match {
- case _: Infinite => throw new IllegalArgumentException("illegal division of infinities")
- // maybe questionable but pragmatic: Inf / 0 => Inf
- case x => Double.PositiveInfinity * (if ((this > Zero) ^ (other >= Zero)) -1 else 1)
- }
-
- def finite_? = false
-
- def length: Long = throw new IllegalArgumentException("length not allowed on infinite Durations")
- def unit: TimeUnit = throw new IllegalArgumentException("unit not allowed on infinite Durations")
- def toNanos: Long = throw new IllegalArgumentException("toNanos not allowed on infinite Durations")
- def toMicros: Long = throw new IllegalArgumentException("toMicros not allowed on infinite Durations")
- def toMillis: Long = throw new IllegalArgumentException("toMillis not allowed on infinite Durations")
- def toSeconds: Long = throw new IllegalArgumentException("toSeconds not allowed on infinite Durations")
- def toMinutes: Long = throw new IllegalArgumentException("toMinutes not allowed on infinite Durations")
- def toHours: Long = throw new IllegalArgumentException("toHours not allowed on infinite Durations")
- def toDays: Long = throw new IllegalArgumentException("toDays not allowed on infinite Durations")
- def toUnit(unit: TimeUnit): Double = throw new IllegalArgumentException("toUnit not allowed on infinite Durations")
-
- def printHMS = toString
- }
-
- /**
- * Infinite duration: greater than any other and not equal to any other,
- * including itself.
- */
- val Inf: Duration = new Duration with Infinite {
- override def toString = "Duration.Inf"
- def >(other: Duration) = true
- def >=(other: Duration) = true
- def <(other: Duration) = false
- def <=(other: Duration) = false
- def unary_- : Duration = MinusInf
- }
-
- /**
- * Infinite negative duration: lesser than any other and not equal to any other,
- * including itself.
- */
- val MinusInf: Duration = new Duration with Infinite {
- override def toString = "Duration.MinusInf"
- def >(other: Duration) = false
- def >=(other: Duration) = false
- def <(other: Duration) = true
- def <=(other: Duration) = true
- def unary_- : Duration = Inf
- }
-
- // Java Factories
- def create(length: Long, unit: TimeUnit): Duration = apply(length, unit)
- def create(length: Double, unit: TimeUnit): Duration = apply(length, unit)
- def create(length: Long, unit: String): Duration = apply(length, unit)
- def parse(s: String): Duration = unapply(s).get
-}
-
-/**
- * Utility for working with java.util.concurrent.TimeUnit durations.
- *
- * <p/>
- * Examples of usage from Java:
- * <pre>
- * import akka.util.FiniteDuration;
- * import java.util.concurrent.TimeUnit;
- *
- * Duration duration = new FiniteDuration(100, MILLISECONDS);
- * Duration duration = new FiniteDuration(5, "seconds");
- *
- * duration.toNanos();
- * </pre>
- *
- * <p/>
- * Examples of usage from Scala:
- * <pre>
- * import akka.util.Duration
- * import java.util.concurrent.TimeUnit
- *
- * val duration = Duration(100, MILLISECONDS)
- * val duration = Duration(100, "millis")
- *
- * duration.toNanos
- * duration < 1.second
- * duration <= Duration.Inf
- * </pre>
- *
- * <p/>
- * Implicits are also provided for Int, Long and Double. Example usage:
- * <pre>
- * import akka.util.duration._
- *
- * val duration = 100 millis
- * </pre>
- *
- * Extractors, parsing and arithmetic are also included:
- * <pre>
- * val d = Duration("1.2 µs")
- * val Duration(length, unit) = 5 millis
- * val d2 = d * 2.5
- * val d3 = d2 + 1.millisecond
- * </pre>
- */
-abstract class Duration {
- def length: Long
- def unit: TimeUnit
- def toNanos: Long
- def toMicros: Long
- def toMillis: Long
- def toSeconds: Long
- def toMinutes: Long
- def toHours: Long
- def toDays: Long
- def toUnit(unit: TimeUnit): Double
- def printHMS: String
- def <(other: Duration): Boolean
- def <=(other: Duration): Boolean
- def >(other: Duration): Boolean
- def >=(other: Duration): Boolean
- def +(other: Duration): Duration
- def -(other: Duration): Duration
- def *(factor: Double): Duration
- def /(factor: Double): Duration
- def /(other: Duration): Double
- def unary_- : Duration
- def finite_? : Boolean
-
- // Java API
- def lt(other: Duration) = this < other
- def lteq(other: Duration) = this <= other
- def gt(other: Duration) = this > other
- def gteq(other: Duration) = this >= other
- def plus(other: Duration) = this + other
- def minus(other: Duration) = this - other
- def mul(factor: Double) = this * factor
- def div(factor: Double) = this / factor
- def div(other: Duration) = this / other
- def neg() = -this
- def isFinite() = finite_?
-}
-
-class FiniteDuration(val length: Long, val unit: TimeUnit) extends Duration {
- import Duration._
-
- def this(length: Long, unit: String) = this(length, Duration.timeUnit(unit))
-
- def toNanos = unit.toNanos(length)
- def toMicros = unit.toMicros(length)
- def toMillis = unit.toMillis(length)
- def toSeconds = unit.toSeconds(length)
- def toMinutes = unit.toMinutes(length)
- def toHours = unit.toHours(length)
- def toDays = unit.toDays(length)
- def toUnit(u: TimeUnit) = long2double(toNanos) / NANOSECONDS.convert(1, u)
-
- override def toString = this match {
- case Duration(1, DAYS) => "1 day"
- case Duration(x, DAYS) => x + " days"
- case Duration(1, HOURS) => "1 hour"
- case Duration(x, HOURS) => x + " hours"
- case Duration(1, MINUTES) => "1 minute"
- case Duration(x, MINUTES) => x + " minutes"
- case Duration(1, SECONDS) => "1 second"
- case Duration(x, SECONDS) => x + " seconds"
- case Duration(1, MILLISECONDS) => "1 millisecond"
- case Duration(x, MILLISECONDS) => x + " milliseconds"
- case Duration(1, MICROSECONDS) => "1 microsecond"
- case Duration(x, MICROSECONDS) => x + " microseconds"
- case Duration(1, NANOSECONDS) => "1 nanosecond"
- case Duration(x, NANOSECONDS) => x + " nanoseconds"
- }
-
- def printHMS = "%02d:%02d:%06.3f".format(toHours, toMinutes % 60, toMillis / 1000. % 60)
-
- def <(other: Duration) = {
- if (other.finite_?) {
- toNanos < other.asInstanceOf[FiniteDuration].toNanos
- } else {
- other > this
- }
- }
-
- def <=(other: Duration) = {
- if (other.finite_?) {
- toNanos <= other.asInstanceOf[FiniteDuration].toNanos
- } else {
- other >= this
- }
- }
-
- def >(other: Duration) = {
- if (other.finite_?) {
- toNanos > other.asInstanceOf[FiniteDuration].toNanos
- } else {
- other < this
- }
- }
-
- def >=(other: Duration) = {
- if (other.finite_?) {
- toNanos >= other.asInstanceOf[FiniteDuration].toNanos
- } else {
- other <= this
- }
- }
-
- def +(other: Duration) = {
- if (!other.finite_?) {
- other
- } else {
- val nanos = toNanos + other.asInstanceOf[FiniteDuration].toNanos
- fromNanos(nanos)
- }
- }
-
- def -(other: Duration) = {
- if (!other.finite_?) {
- other
- } else {
- val nanos = toNanos - other.asInstanceOf[FiniteDuration].toNanos
- fromNanos(nanos)
- }
- }
-
- def *(factor: Double) = fromNanos(long2double(toNanos) * factor)
-
- def /(factor: Double) = fromNanos(long2double(toNanos) / factor)
-
- def /(other: Duration) = if (other.finite_?) long2double(toNanos) / other.toNanos else 0
-
- def unary_- = Duration(-length, unit)
-
- def finite_? = true
-
- override def equals(other: Any) =
- other.isInstanceOf[FiniteDuration] &&
- toNanos == other.asInstanceOf[FiniteDuration].toNanos
-
- override def hashCode = toNanos.asInstanceOf[Int]
-}
-
-class DurationInt(n: Int) {
- def nanoseconds = Duration(n, NANOSECONDS)
- def nanos = Duration(n, NANOSECONDS)
- def nanosecond = Duration(n, NANOSECONDS)
- def nano = Duration(n, NANOSECONDS)
-
- def microseconds = Duration(n, MICROSECONDS)
- def micros = Duration(n, MICROSECONDS)
- def microsecond = Duration(n, MICROSECONDS)
- def micro = Duration(n, MICROSECONDS)
-
- def milliseconds = Duration(n, MILLISECONDS)
- def millis = Duration(n, MILLISECONDS)
- def millisecond = Duration(n, MILLISECONDS)
- def milli = Duration(n, MILLISECONDS)
-
- def seconds = Duration(n, SECONDS)
- def second = Duration(n, SECONDS)
-
- def minutes = Duration(n, MINUTES)
- def minute = Duration(n, MINUTES)
-
- def hours = Duration(n, HOURS)
- def hour = Duration(n, HOURS)
-
- def days = Duration(n, DAYS)
- def day = Duration(n, DAYS)
-}
-
-class DurationLong(n: Long) {
- def nanoseconds = Duration(n, NANOSECONDS)
- def nanos = Duration(n, NANOSECONDS)
- def nanosecond = Duration(n, NANOSECONDS)
- def nano = Duration(n, NANOSECONDS)
-
- def microseconds = Duration(n, MICROSECONDS)
- def micros = Duration(n, MICROSECONDS)
- def microsecond = Duration(n, MICROSECONDS)
- def micro = Duration(n, MICROSECONDS)
-
- def milliseconds = Duration(n, MILLISECONDS)
- def millis = Duration(n, MILLISECONDS)
- def millisecond = Duration(n, MILLISECONDS)
- def milli = Duration(n, MILLISECONDS)
-
- def seconds = Duration(n, SECONDS)
- def second = Duration(n, SECONDS)
-
- def minutes = Duration(n, MINUTES)
- def minute = Duration(n, MINUTES)
-
- def hours = Duration(n, HOURS)
- def hour = Duration(n, HOURS)
-
- def days = Duration(n, DAYS)
- def day = Duration(n, DAYS)
-}
-
-class DurationDouble(d: Double) {
- def nanoseconds = Duration(d, NANOSECONDS)
- def nanos = Duration(d, NANOSECONDS)
- def nanosecond = Duration(d, NANOSECONDS)
- def nano = Duration(d, NANOSECONDS)
-
- def microseconds = Duration(d, MICROSECONDS)
- def micros = Duration(d, MICROSECONDS)
- def microsecond = Duration(d, MICROSECONDS)
- def micro = Duration(d, MICROSECONDS)
-
- def milliseconds = Duration(d, MILLISECONDS)
- def millis = Duration(d, MILLISECONDS)
- def millisecond = Duration(d, MILLISECONDS)
- def milli = Duration(d, MILLISECONDS)
-
- def seconds = Duration(d, SECONDS)
- def second = Duration(d, SECONDS)
-
- def minutes = Duration(d, MINUTES)
- def minute = Duration(d, MINUTES)
-
- def hours = Duration(d, HOURS)
- def hour = Duration(d, HOURS)
-
- def days = Duration(d, DAYS)
- def day = Duration(d, DAYS)
-}
diff --git a/test/disabled/presentation/akka/src/akka/util/HashCode.scala b/test/disabled/presentation/akka/src/akka/util/HashCode.scala
deleted file mode 100644
index d015f12f5d..0000000000
--- a/test/disabled/presentation/akka/src/akka/util/HashCode.scala
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.util
-
-import java.lang.reflect.{ Array => JArray }
-import java.lang.{ Float => JFloat, Double => JDouble }
-
-/**
- * Set of methods which allow easy implementation of <code>hashCode</code>.
- *
- * Example:
- * <pre>
- * override def hashCode: Int = {
- * var result = HashCode.SEED
- * //collect the contributions of various fields
- * result = HashCode.hash(result, fPrimitive)
- * result = HashCode.hash(result, fObject)
- * result = HashCode.hash(result, fArray)
- * result
- * }
- * </pre>
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-object HashCode {
- val SEED = 23
-
- def hash(seed: Int, any: Any): Int = any match {
- case value: Boolean => hash(seed, value)
- case value: Char => hash(seed, value)
- case value: Short => hash(seed, value)
- case value: Int => hash(seed, value)
- case value: Long => hash(seed, value)
- case value: Float => hash(seed, value)
- case value: Double => hash(seed, value)
- case value: Byte => hash(seed, value)
- case value: AnyRef =>
- var result = seed
- if (value eq null) result = hash(result, 0)
- else if (!isArray(value)) result = hash(result, value.hashCode())
- else for (id ← 0 until JArray.getLength(value)) result = hash(result, JArray.get(value, id)) // is an array
- result
- }
- def hash(seed: Int, value: Boolean): Int = firstTerm(seed) + (if (value) 1 else 0)
- def hash(seed: Int, value: Char): Int = firstTerm(seed) + value.asInstanceOf[Int]
- def hash(seed: Int, value: Int): Int = firstTerm(seed) + value
- def hash(seed: Int, value: Long): Int = firstTerm(seed) + (value ^ (value >>> 32)).asInstanceOf[Int]
- def hash(seed: Int, value: Float): Int = hash(seed, JFloat.floatToIntBits(value))
- def hash(seed: Int, value: Double): Int = hash(seed, JDouble.doubleToLongBits(value))
-
- private def firstTerm(seed: Int): Int = PRIME * seed
- private def isArray(anyRef: AnyRef): Boolean = anyRef.getClass.isArray
- private val PRIME = 37
-}
-
diff --git a/test/disabled/presentation/akka/src/akka/util/Helpers.scala b/test/disabled/presentation/akka/src/akka/util/Helpers.scala
deleted file mode 100644
index 0ff45408d0..0000000000
--- a/test/disabled/presentation/akka/src/akka/util/Helpers.scala
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.util
-
-/**
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-object Helpers {
-
- implicit def null2Option[T](t: T): Option[T] = Option(t)
-
- def intToBytes(value: Int): Array[Byte] = {
- val bytes = new Array[Byte](4)
- bytes(0) = (value >>> 24).asInstanceOf[Byte]
- bytes(1) = (value >>> 16).asInstanceOf[Byte]
- bytes(2) = (value >>> 8).asInstanceOf[Byte]
- bytes(3) = value.asInstanceOf[Byte]
- bytes
- }
-
- def bytesToInt(bytes: Array[Byte], offset: Int): Int = {
- (0 until 4).foldLeft(0)((value, index) => value + ((bytes(index + offset) & 0x000000FF) << ((4 - 1 - index) * 8)))
- }
-
- /**
- * Convenience helper to cast the given Option of Any to an Option of the given type. Will throw a ClassCastException
- * if the actual type is not assignable from the given one.
- */
- def narrow[T](o: Option[Any]): Option[T] = {
- require((o ne null), "Option to be narrowed must not be null!")
- o.asInstanceOf[Option[T]]
- }
-
- /**
- * Convenience helper to cast the given Option of Any to an Option of the given type. Will swallow a possible
- * ClassCastException and return None in that case.
- */
- def narrowSilently[T: ClassTag](o: Option[Any]): Option[T] =
- try {
- narrow(o)
- } catch {
- case e: ClassCastException =>
- None
- }
-
- /**
- * Reference that can hold either a typed value or an exception.
- *
- * Usage:
- * <pre>
- * scala> ResultOrError(1)
- * res0: ResultOrError[Int] = ResultOrError@a96606
- *
- * scala> res0()
- * res1: Int = 1
- *
- * scala> res0() = 3
- *
- * scala> res0()
- * res3: Int = 3
- *
- * scala> res0() = { println("Hello world"); 3}
- * Hello world
- *
- * scala> res0()
- * res5: Int = 3
- *
- * scala> res0() = error("Lets see what happens here...")
- *
- * scala> res0()
- * java.lang.RuntimeException: Lets see what happens here...
- * at ResultOrError.apply(Helper.scala:11)
- * at .<init>(<console>:6)
- * at .<clinit>(<console>)
- * at Re...
- * </pre>
- */
- class ResultOrError[R](result: R) {
- private[this] var contents: Either[R, Throwable] = Left(result)
-
- def update(value: => R) = {
- contents = try {
- Left(value)
- } catch {
- case (error: Throwable) => Right(error)
- }
- }
-
- def apply() = contents match {
- case Left(result) => result
- case Right(error) => throw error.fillInStackTrace
- }
- }
- object ResultOrError {
- def apply[R](result: R) = new ResultOrError(result)
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/util/ListenerManagement.scala b/test/disabled/presentation/akka/src/akka/util/ListenerManagement.scala
deleted file mode 100644
index 863e905d59..0000000000
--- a/test/disabled/presentation/akka/src/akka/util/ListenerManagement.scala
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.util
-
-import java.util.concurrent.ConcurrentSkipListSet
-import akka.actor.{ ActorInitializationException, ActorRef }
-
-/**
- * A manager for listener actors. Intended for mixin by observables.
- *
- * @author Martin Krasser
- */
-trait ListenerManagement {
-
- private val listeners = new ConcurrentSkipListSet[ActorRef]
-
- /**
- * Specifies whether listeners should be started when added and stopped when removed or not
- */
- protected def manageLifeCycleOfListeners: Boolean = true
-
- /**
- * Adds the <code>listener</code> this registry's listener list.
- * The <code>listener</code> is started by this method if manageLifeCycleOfListeners yields true.
- */
- def addListener(listener: ActorRef) {
- if (manageLifeCycleOfListeners) listener.start()
- listeners add listener
- }
-
- /**
- * Removes the <code>listener</code> this registry's listener list.
- * The <code>listener</code> is stopped by this method if manageLifeCycleOfListeners yields true.
- */
- def removeListener(listener: ActorRef) {
- listeners remove listener
- if (manageLifeCycleOfListeners) listener.stop()
- }
-
- /*
- * Returns whether there are any listeners currently
- */
- def hasListeners: Boolean = !listeners.isEmpty
-
- /**
- * Checks if a specific listener is registered. ActorInitializationException leads to removal of listener if that
- * one isShutdown.
- */
- def hasListener(listener: ActorRef): Boolean = listeners.contains(listener)
-
- protected[akka] def notifyListeners(message: => Any) {
- if (hasListeners) {
- val msg = message
- val iterator = listeners.iterator
- while (iterator.hasNext) {
- val listener = iterator.next
- // Uncomment if those exceptions are so frequent as to bottleneck
- // if (listener.isShutdown) iterator.remove() else
- try {
- listener ! msg
- } catch {
- case e: ActorInitializationException =>
- if (listener.isShutdown) iterator.remove()
- }
- }
- }
- }
-
- /**
- * Execute <code>f</code> with each listener as argument. ActorInitializationException is not handled.
- */
- protected[akka] def foreachListener(f: (ActorRef) => Unit) {
- val iterator = listeners.iterator
- while (iterator.hasNext) {
- val listener = iterator.next
- if (listener.isRunning) f(listener)
- }
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/util/LockUtil.scala b/test/disabled/presentation/akka/src/akka/util/LockUtil.scala
deleted file mode 100644
index 4aaefadc4a..0000000000
--- a/test/disabled/presentation/akka/src/akka/util/LockUtil.scala
+++ /dev/null
@@ -1,197 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.util
-
-import java.util.concurrent.locks.{ ReentrantReadWriteLock, ReentrantLock }
-import java.util.concurrent.atomic.{ AtomicBoolean }
-import akka.event.EventHandler
-
-/**
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-final class ReentrantGuard {
- val lock = new ReentrantLock
-
- final def withGuard[T](body: => T): T = {
- lock.lock
- try {
- body
- } finally {
- lock.unlock
- }
- }
-
- final def tryWithGuard[T](body: => T): T = {
- while (!lock.tryLock) { Thread.sleep(10) } // wait on the monitor to be unlocked
- try {
- body
- } finally {
- lock.unlock
- }
- }
-}
-
-/**
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-class ReadWriteGuard {
- private val rwl = new ReentrantReadWriteLock
- val readLock = rwl.readLock
- val writeLock = rwl.writeLock
-
- def withWriteGuard[T](body: => T): T = {
- writeLock.lock
- try {
- body
- } finally {
- writeLock.unlock
- }
- }
-
- def withReadGuard[T](body: => T): T = {
- readLock.lock
- try {
- body
- } finally {
- readLock.unlock
- }
- }
-}
-
-/**
- * A very simple lock that uses CCAS (Compare Compare-And-Swap)
- * Does not keep track of the owner and isn't Reentrant, so don't nest and try to stick to the if*-methods
- */
-class SimpleLock {
- val acquired = new AtomicBoolean(false)
-
- def ifPossible(perform: () => Unit): Boolean = {
- if (tryLock()) {
- try {
- perform
- } finally {
- unlock()
- }
- true
- } else false
- }
-
- def ifPossibleYield[T](perform: () => T): Option[T] = {
- if (tryLock()) {
- try {
- Some(perform())
- } finally {
- unlock()
- }
- } else None
- }
-
- def ifPossibleApply[T, R](value: T)(function: (T) => R): Option[R] = {
- if (tryLock()) {
- try {
- Some(function(value))
- } finally {
- unlock()
- }
- } else None
- }
-
- def tryLock() = {
- if (acquired.get) false
- else acquired.compareAndSet(false, true)
- }
-
- def tryUnlock() = {
- acquired.compareAndSet(true, false)
- }
-
- def locked = acquired.get
-
- def unlock() {
- acquired.set(false)
- }
-}
-
-/**
- * An atomic switch that can be either on or off
- */
-class Switch(startAsOn: Boolean = false) {
- private val switch = new AtomicBoolean(startAsOn)
-
- protected def transcend(from: Boolean, action: => Unit): Boolean = synchronized {
- if (switch.compareAndSet(from, !from)) {
- try {
- action
- } catch {
- case e: Throwable =>
- EventHandler.error(e, this, e.getMessage)
- switch.compareAndSet(!from, from) // revert status
- throw e
- }
- true
- } else false
- }
-
- def switchOff(action: => Unit): Boolean = transcend(from = true, action)
- def switchOn(action: => Unit): Boolean = transcend(from = false, action)
-
- def switchOff: Boolean = synchronized { switch.compareAndSet(true, false) }
- def switchOn: Boolean = synchronized { switch.compareAndSet(false, true) }
-
- def ifOnYield[T](action: => T): Option[T] = {
- if (switch.get) Some(action)
- else None
- }
-
- def ifOffYield[T](action: => T): Option[T] = {
- if (!switch.get) Some(action)
- else None
- }
-
- def ifOn(action: => Unit): Boolean = {
- if (switch.get) {
- action
- true
- } else false
- }
-
- def ifOff(action: => Unit): Boolean = {
- if (!switch.get) {
- action
- true
- } else false
- }
-
- def whileOnYield[T](action: => T): Option[T] = synchronized {
- if (switch.get) Some(action)
- else None
- }
-
- def whileOffYield[T](action: => T): Option[T] = synchronized {
- if (!switch.get) Some(action)
- else None
- }
-
- def whileOn(action: => Unit): Boolean = synchronized {
- if (switch.get) {
- action
- true
- } else false
- }
-
- def whileOff(action: => Unit): Boolean = synchronized {
- if (switch.get) {
- action
- true
- } else false
- }
-
- def ifElseYield[T](on: => T)(off: => T) = synchronized {
- if (switch.get) on else off
- }
-
- def isOn = switch.get
- def isOff = !isOn
-}
diff --git a/test/disabled/presentation/akka/src/akka/util/ReflectiveAccess.scala b/test/disabled/presentation/akka/src/akka/util/ReflectiveAccess.scala
deleted file mode 100644
index f38d1f9b98..0000000000
--- a/test/disabled/presentation/akka/src/akka/util/ReflectiveAccess.scala
+++ /dev/null
@@ -1,232 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.util
-
-import akka.dispatch.{ Future, CompletableFuture, MessageInvocation }
-import akka.config.{ Config, ModuleNotAvailableException }
-
-import java.net.InetSocketAddress
-import akka.remoteinterface.RemoteSupport
-import akka.actor._
-import akka.event.EventHandler
-
-/**
- * Helper class for reflective access to different modules in order to allow optional loading of modules.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
-object ReflectiveAccess {
-
- val loader = getClass.getClassLoader
-
- def isRemotingEnabled = Remote.isEnabled
- lazy val isTypedActorEnabled = TypedActorModule.isEnabled
-
- def ensureRemotingEnabled = Remote.ensureEnabled
- def ensureTypedActorEnabled = TypedActorModule.ensureEnabled
-
- /**
- * Reflective access to the RemoteClient module.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
- object Remote {
- val TRANSPORT = Config.config.getString("akka.remote.layer", "akka.remote.netty.NettyRemoteSupport")
-
- private[akka] val configDefaultAddress =
- new InetSocketAddress(Config.config.getString("akka.remote.server.hostname", "localhost"),
- Config.config.getInt("akka.remote.server.port", 2552))
-
- lazy val isEnabled = remoteSupportClass.isDefined
-
- def ensureEnabled = if (!isEnabled) {
- val e = new ModuleNotAvailableException("Can't load the remoting module, make sure that akka-remote.jar is on the classpath")
- EventHandler.debug(this, e.toString)
- throw e
- }
- val remoteSupportClass = getClassFor[RemoteSupport](TRANSPORT) match {
- case Right(value) => Some(value)
- case Left(exception) =>
- EventHandler.debug(this, exception.toString)
- None
- }
-
- protected[akka] val defaultRemoteSupport: Option[() => RemoteSupport] =
- remoteSupportClass map { remoteClass =>
- () => createInstance[RemoteSupport](
- remoteClass,
- Array[Class[_]](),
- Array[AnyRef]()) match {
- case Right(value) => value
- case Left(exception) =>
- val e = new ModuleNotAvailableException(
- "Can't instantiate [%s] - make sure that akka-remote.jar is on the classpath".format(remoteClass.getName), exception)
- EventHandler.debug(this, e.toString)
- throw e
- }
- }
- }
-
- /**
- * Reflective access to the TypedActors module.
- *
- * @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
- */
- object TypedActorModule {
-
- type TypedActorObject = {
- def isJoinPoint(message: Any): Boolean
- def isJoinPointAndOneWay(message: Any): Boolean
- def actorFor(proxy: AnyRef): Option[ActorRef]
- def proxyFor(actorRef: ActorRef): Option[AnyRef]
- def stop(anyRef: AnyRef): Unit
- }
-
- lazy val isEnabled = typedActorObjectInstance.isDefined
-
- def ensureEnabled = if (!isTypedActorEnabled) throw new ModuleNotAvailableException(
- "Can't load the typed actor module, make sure that akka-typed-actor.jar is on the classpath")
-
- val typedActorObjectInstance: Option[TypedActorObject] =
- getObjectFor[TypedActorObject]("akka.actor.TypedActor$") match {
- case Right(value) => Some(value)
- case Left(exception) =>
- EventHandler.debug(this, exception.toString)
- None
- }
-
- def resolveFutureIfMessageIsJoinPoint(message: Any, future: Future[_]): Boolean = {
- ensureEnabled
- if (typedActorObjectInstance.get.isJoinPointAndOneWay(message)) {
- future.asInstanceOf[CompletableFuture[Option[_]]].completeWithResult(None)
- }
- typedActorObjectInstance.get.isJoinPoint(message)
- }
- }
-
- object AkkaCloudModule {
-
- type Mailbox = {
- def enqueue(message: MessageInvocation)
- def dequeue: MessageInvocation
- }
-
- type Serializer = {
- def toBinary(obj: AnyRef): Array[Byte]
- def fromBinary(bytes: Array[Byte], clazz: Option[Class[_]]): AnyRef
- }
-
- lazy val isEnabled = clusterObjectInstance.isDefined
-
- val clusterObjectInstance: Option[AnyRef] =
- getObjectFor[AnyRef]("akka.cloud.cluster.Cluster$") match {
- case Right(value) => Some(value)
- case Left(exception) =>
- EventHandler.debug(this, exception.toString)
- None
- }
-
- val serializerClass: Option[Class[_]] =
- getClassFor("akka.serialization.Serializer") match {
- case Right(value) => Some(value)
- case Left(exception) =>
- EventHandler.debug(this, exception.toString)
- None
- }
-
- def ensureEnabled = if (!isEnabled) throw new ModuleNotAvailableException(
- "Feature is only available in Akka Cloud")
- }
-
- val noParams = Array[Class[_]]()
- val noArgs = Array[AnyRef]()
-
- def createInstance[T](clazz: Class[_],
- params: Array[Class[_]],
- args: Array[AnyRef]): Either[Exception, T] = try {
- assert(clazz ne null)
- assert(params ne null)
- assert(args ne null)
- val ctor = clazz.getDeclaredConstructor(params: _*)
- ctor.setAccessible(true)
- Right(ctor.newInstance(args: _*).asInstanceOf[T])
- } catch {
- case e: Exception => Left(e)
- }
-
- def createInstance[T](fqn: String,
- params: Array[Class[_]],
- args: Array[AnyRef],
- classloader: ClassLoader = loader): Either[Exception, T] = try {
- assert(params ne null)
- assert(args ne null)
- getClassFor(fqn) match {
- case Right(value) =>
- val ctor = value.getDeclaredConstructor(params: _*)
- ctor.setAccessible(true)
- Right(ctor.newInstance(args: _*).asInstanceOf[T])
- case Left(exception) => Left(exception) //We could just cast this to Either[Exception, T] but it's ugly
- }
- } catch {
- case e: Exception =>
- Left(e)
- }
-
- //Obtains a reference to fqn.MODULE$
- def getObjectFor[T](fqn: String, classloader: ClassLoader = loader): Either[Exception, T] = try {
- getClassFor(fqn) match {
- case Right(value) =>
- val instance = value.getDeclaredField("MODULE$")
- instance.setAccessible(true)
- val obj = instance.get(null)
- if (obj eq null) Left(new NullPointerException) else Right(obj.asInstanceOf[T])
- case Left(exception) => Left(exception) //We could just cast this to Either[Exception, T] but it's ugly
- }
- } catch {
- case e: Exception =>
- Left(e)
- }
-
- def getClassFor[T](fqn: String, classloader: ClassLoader = loader): Either[Exception, Class[T]] = try {
- assert(fqn ne null)
-
- // First, use the specified CL
- val first = try {
- Right(classloader.loadClass(fqn).asInstanceOf[Class[T]])
- } catch {
- case c: ClassNotFoundException => Left(c)
- }
-
- if (first.isRight) first
- else {
- // Second option is to use the ContextClassLoader
- val second = try {
- Right(Thread.currentThread.getContextClassLoader.loadClass(fqn).asInstanceOf[Class[T]])
- } catch {
- case c: ClassNotFoundException => Left(c)
- }
-
- if (second.isRight) second
- else {
- val third = try {
- if (classloader ne loader) Right(loader.loadClass(fqn).asInstanceOf[Class[T]]) else Left(null) //Horrid
- } catch {
- case c: ClassNotFoundException => Left(c)
- }
-
- if (third.isRight) third
- else {
- try {
- Right(Class.forName(fqn).asInstanceOf[Class[T]]) // Last option is Class.forName
- } catch {
- case c: ClassNotFoundException => Left(c)
- }
- }
- }
- }
- } catch {
- case e: Exception => Left(e)
- }
-}
diff --git a/test/disabled/presentation/akka/src/akka/util/package.scala b/test/disabled/presentation/akka/src/akka/util/package.scala
deleted file mode 100644
index 26a24929c9..0000000000
--- a/test/disabled/presentation/akka/src/akka/util/package.scala
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
- */
-
-package akka.util
-
-import java.util.concurrent.TimeUnit
-
-package object duration {
- implicit def intToDurationInt(n: Int) = new DurationInt(n)
- implicit def longToDurationLong(n: Long) = new DurationLong(n)
- implicit def doubleToDurationDouble(d: Double) = new DurationDouble(d)
-
- implicit def pairIntToDuration(p: (Int, TimeUnit)) = Duration(p._1, p._2)
- implicit def pairLongToDuration(p: (Long, TimeUnit)) = Duration(p._1, p._2)
- implicit def durationToPair(d: Duration) = (d.length, d.unit)
-
- implicit def intMult(i: Int) = new {
- def *(d: Duration) = d * i
- }
- implicit def longMult(l: Long) = new {
- def *(d: Duration) = d * l
- }
- implicit def doubleMult(f: Double) = new {
- def *(d: Duration) = d * f
- }
-}
diff --git a/test/disabled/presentation/akka/src/com/eaio/util/lang/Hex.java b/test/disabled/presentation/akka/src/com/eaio/util/lang/Hex.java
deleted file mode 100644
index 7794059517..0000000000
--- a/test/disabled/presentation/akka/src/com/eaio/util/lang/Hex.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Hex.java
- *
- * Created 04.07.2003.
- *
- * eaio: UUID - an implementation of the UUID specification Copyright (c) 2003-2009 Johann Burkard (jb@eaio.com)
- * http://eaio.com.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
- * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
- * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-package com.eaio.util.lang;
-
-import java.io.IOException;
-
-/**
- * Number-to-hexadecimal and hexadecimal-to-number conversions.
- *
- * @see <a href="http://johannburkard.de/software/uuid/">UUID</a>
- * @author <a href="mailto:jb@eaio.com">Johann Burkard</a>
- * @version $Id: Hex.java 1888 2009-03-15 12:43:24Z johann $
- */
-public final class Hex {
-
- /**
- * No instances needed.
- */
- private Hex() {
- super();
- }
-
- private static final char[] DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e',
- 'f' };
-
- /**
- * Turns a <code>short</code> into hex octets.
- *
- * @param a the {@link Appendable}, may not be <code>null</code>
- * @param in the integer
- * @return {@link Appendable}
- */
- public static Appendable append(Appendable a, short in) {
- return append(a, (long) in, 4);
- }
-
- /**
- * Turns a <code>short</code> into hex octets.
- *
- * @param a the {@link Appendable}, may not be <code>null</code>
- * @param in the integer
- * @param length the number of octets to produce
- * @return {@link Appendable}
- */
- public static Appendable append(Appendable a, short in, int length) {
- return append(a, (long) in, length);
- }
-
- /**
- * Turns an <code>int</code> into hex octets.
- *
- * @param a the {@link Appendable}, may not be <code>null</code>
- * @param in the integer
- * @return {@link Appendable}
- */
- public static Appendable append(Appendable a, int in) {
- return append(a, (long) in, 8);
- }
-
- /**
- * Turns an <code>int</code> into hex octets.
- *
- * @param a the {@link Appendable}, may not be <code>null</code>
- * @param in the integer
- * @param length the number of octets to produce
- * @return {@link Appendable}
- */
- public static Appendable append(Appendable a, int in, int length) {
- return append(a, (long) in, length);
- }
-
- /**
- * Turns a <code>long</code> into hex octets.
- *
- * @param a the {@link Appendable}, may not be <code>null</code>
- * @param in the long
- * @return {@link Appendable}
- */
- public static Appendable append(Appendable a, long in) {
- return append(a, in, 16);
- }
-
- /**
- * Turns a <code>long</code> into hex octets.
- *
- * @param a the {@link Appendable}, may not be <code>null</code>
- * @param in the long
- * @param length the number of octets to produce
- * @return {@link Appendable}
- */
- public static Appendable append(Appendable a, long in, int length) {
- try {
- int lim = (length << 2) - 4;
- while (lim >= 0) {
- a.append(DIGITS[(byte) (in >> lim) & 0x0f]);
- lim -= 4;
- }
- }
- catch (IOException ex) {
- // Bla
- }
- return a;
- }
-
- /**
- * Turns a <code>byte</code> array into hex octets.
- *
- * @param a the {@link Appendable}, may not be <code>null</code>
- * @param bytes the <code>byte</code> array
- * @return {@link Appendable}
- */
- public static Appendable append(Appendable a, byte[] bytes) {
- try {
- for (byte b : bytes) {
- a.append(DIGITS[(byte) ((b & 0xF0) >> 4)]);
- a.append(DIGITS[(byte) (b & 0x0F)]);
- }
- }
- catch (IOException ex) {
- // Bla
- }
- return a;
- }
-
- /**
- * Parses a <code>long</code> from a hex encoded number. This method will skip all characters that are not 0-9,
- * A-F and a-f.
- * <p>
- * Returns 0 if the {@link CharSequence} does not contain any interesting characters.
- *
- * @param s the {@link CharSequence} to extract a <code>long</code> from, may not be <code>null</code>
- * @return a <code>long</code>
- * @throws NullPointerException if the {@link CharSequence} is <code>null</code>
- */
- public static long parseLong(CharSequence s) {
- long out = 0;
- byte shifts = 0;
- char c;
- for (int i = 0; i < s.length() && shifts < 16; i++) {
- c = s.charAt(i);
- if ((c > 47) && (c < 58)) {
- ++shifts;
- out <<= 4;
- out |= c - 48;
- }
- else if ((c > 64) && (c < 71)) {
- ++shifts;
- out <<= 4;
- out |= c - 55;
- }
- else if ((c > 96) && (c < 103)) {
- ++shifts;
- out <<= 4;
- out |= c - 87;
- }
- }
- return out;
- }
-
- /**
- * Parses a <code>short</code> from a hex encoded number. This method will skip all characters that are not 0-9,
- * A-F and a-f.
- * <p>
- * Returns 0 if the {@link CharSequence} does not contain any interesting characters.
- *
- * @param s the {@link CharSequence} to extract a <code>short</code> from, may not be <code>null</code>
- * @return a <code>short</code>
- * @throws NullPointerException if the {@link CharSequence} is <code>null</code>
- */
- public static short parseShort(String s) {
- short out = 0;
- byte shifts = 0;
- char c;
- for (int i = 0; i < s.length() && shifts < 4; i++) {
- c = s.charAt(i);
- if ((c > 47) && (c < 58)) {
- ++shifts;
- out <<= 4;
- out |= c - 48;
- }
- else if ((c > 64) && (c < 71)) {
- ++shifts;
- out <<= 4;
- out |= c - 55;
- }
- else if ((c > 96) && (c < 103)) {
- ++shifts;
- out <<= 4;
- out |= c - 87;
- }
- }
- return out;
- }
-
-}
diff --git a/test/disabled/presentation/akka/src/com/eaio/uuid/MACAddressParser.java b/test/disabled/presentation/akka/src/com/eaio/uuid/MACAddressParser.java
deleted file mode 100644
index c077147470..0000000000
--- a/test/disabled/presentation/akka/src/com/eaio/uuid/MACAddressParser.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * MACAddressParserTest.java
- *
- * Created 30.01.2006.
- *
- * eaio: UUID - an implementation of the UUID specification
- * Copyright (c) 2003-2009 Johann Burkard (jb@eaio.com) http://eaio.com.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-package com.eaio.uuid;
-
-/**
- * The MAC address parser attempts to find the following patterns:
- * <ul>
- * <li>.{1,2}:.{1,2}:.{1,2}:.{1,2}:.{1,2}:.{1,2}</li>
- * <li>.{1,2}-.{1,2}-.{1,2}-.{1,2}-.{1,2}-.{1,2}</li>
- * </ul>
- *
- * @see <a href="http://johannburkard.de/software/uuid/">UUID</a>
- * @author <a href="mailto:jb@eaio.com">Johann Burkard</a>
- * @version $Id: MACAddressParser.java 1888 2009-03-15 12:43:24Z johann $
- */
-class MACAddressParser {
-
- /**
- * No instances needed.
- */
- private MACAddressParser() {
- super();
- }
-
- /**
- * Attempts to find a pattern in the given String.
- *
- * @param in the String, may not be <code>null</code>
- * @return the substring that matches this pattern or <code>null</code>
- */
- static String parse(String in) {
-
- String out = in;
-
- // lanscan
-
- int hexStart = out.indexOf("0x");
- if (hexStart != -1 && out.indexOf("ETHER") != -1) {
- int hexEnd = out.indexOf(' ', hexStart);
- if (hexEnd > hexStart + 2) {
- out = out.substring(hexStart, hexEnd);
- }
- }
-
- else {
-
- int octets = 0;
- int lastIndex, old, end;
-
- if (out.indexOf('-') > -1) {
- out = out.replace('-', ':');
- }
-
- lastIndex = out.lastIndexOf(':');
-
- if (lastIndex > out.length() - 2) {
- out = null;
- }
- else {
-
- end = Math.min(out.length(), lastIndex + 3);
-
- ++octets;
- old = lastIndex;
- while (octets != 5 && lastIndex != -1 && lastIndex > 1) {
- lastIndex = out.lastIndexOf(':', --lastIndex);
- if (old - lastIndex == 3 || old - lastIndex == 2) {
- ++octets;
- old = lastIndex;
- }
- }
-
- if (octets == 5 && lastIndex > 1) {
- out = out.substring(lastIndex - 2, end).trim();
- }
- else {
- out = null;
- }
-
- }
-
- }
-
- if (out != null && out.startsWith("0x")) {
- out = out.substring(2);
- }
-
- return out;
- }
-
-}
diff --git a/test/disabled/presentation/akka/src/com/eaio/uuid/UUID.java b/test/disabled/presentation/akka/src/com/eaio/uuid/UUID.java
deleted file mode 100644
index 6c49bcd1c8..0000000000
--- a/test/disabled/presentation/akka/src/com/eaio/uuid/UUID.java
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * UUID.java
- *
- * Created 07.02.2003
- *
- * eaio: UUID - an implementation of the UUID specification
- * Copyright (c) 2003-2009 Johann Burkard (jb@eaio.com) http://eaio.com.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-package com.eaio.uuid;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-
-import org.omg.CORBA.portable.IDLEntity;
-
-import com.eaio.util.lang.Hex;
-
-/**
- * Creates UUIDs according to the DCE Universal Token Identifier specification.
- * <p>
- * All you need to know:
- * <pre>
- * UUID u = new UUID();
- * </pre>
- *
- * @see <a href="http://www.opengroup.org/onlinepubs/9629399/apdxa.htm">
- * http://www.opengroup.org/onlinepubs/9629399/apdxa.htm
- * </a>
- * @see <a href="http://www.uddi.org/pubs/draft-leach-uuids-guids-01.txt">
- * http://www.uddi.org/pubs/draft-leach-uuids-guids-01.txt
- * </a>
- * @see <a href="http://johannburkard.de/software/uuid/">UUID</a>
- * @author <a href="mailto:jb@eaio.de">Johann Burkard</a>
- * @version $Id: UUID.java 1888 2009-03-15 12:43:24Z johann $
- */
-public class UUID implements Comparable<UUID>, Serializable, Cloneable,
- IDLEntity {
-
- /**
- * Hasn't ever changed between versions.
- */
- static final long serialVersionUID = 7435962790062944603L;
-
- /**
- * The time field of the UUID.
- *
- * @serial
- */
- public long time;
-
- /**
- * The clock sequence and node field of the UUID.
- *
- * @serial
- */
- public long clockSeqAndNode;
-
- /**
- * Constructor for UUID. Constructs a new, unique UUID.
- *
- * @see UUIDGen#newTime()
- * @see UUIDGen#getClockSeqAndNode()
- */
- public UUID() {
- this(UUIDGen.newTime(), UUIDGen.getClockSeqAndNode());
- }
-
- /**
- * Constructor for UUID. Constructs a UUID from two <code>long</code> values.
- *
- * @param time the upper 64 bits
- * @param clockSeqAndNode the lower 64 bits
- */
- public UUID(long time, long clockSeqAndNode) {
- this.time = time;
- this.clockSeqAndNode = clockSeqAndNode;
- }
-
- /**
- * Copy constructor for UUID. Values of the given UUID are copied.
- *
- * @param u the UUID, may not be <code>null</code>
- */
- public UUID(UUID u) {
- this(u.time, u.clockSeqAndNode);
- }
-
- /**
- * Parses a textual representation of a UUID.
- * <p>
- * No validation is performed. If the {@link CharSequence} is shorter than 36 characters,
- * {@link ArrayIndexOutOfBoundsException}s will be thrown.
- *
- * @param s the {@link CharSequence}, may not be <code>null</code>
- */
- public UUID(CharSequence s) {
- this(Hex.parseLong(s.subSequence(0, 18)), Hex.parseLong(s.subSequence(
- 19, 36)));
- }
-
- /**
- * Compares this UUID to another Object. Throws a {@link ClassCastException} if
- * the other Object is not an instance of the UUID class. Returns a value
- * smaller than zero if the other UUID is "larger" than this UUID and a value
- * larger than zero if the other UUID is "smaller" than this UUID.
- *
- * @param t the other UUID, may not be <code>null</code>
- * @return a value &lt; 0, 0 or a value &gt; 0
- * @see java.lang.Comparable#compareTo(java.lang.Object)
- * @throws ClassCastException
- */
- public int compareTo(UUID t) {
- if (this == t) {
- return 0;
- }
- if (time > t.time) {
- return 1;
- }
- if (time < t.time) {
- return -1;
- }
- if (clockSeqAndNode > t.clockSeqAndNode) {
- return 1;
- }
- if (clockSeqAndNode < t.clockSeqAndNode) {
- return -1;
- }
- return 0;
- }
-
- /**
- * Tweaked Serialization routine.
- *
- * @param out the ObjectOutputStream
- * @throws IOException
- */
- private void writeObject(ObjectOutputStream out) throws IOException {
- out.writeLong(time);
- out.writeLong(clockSeqAndNode);
- }
-
- /**
- * Tweaked Serialization routine.
- *
- * @param in the ObjectInputStream
- * @throws IOException
- */
- private void readObject(ObjectInputStream in) throws IOException {
- time = in.readLong();
- clockSeqAndNode = in.readLong();
- }
-
- /**
- * Returns this UUID as a String.
- *
- * @return a String, never <code>null</code>
- * @see java.lang.Object#toString()
- * @see #toAppendable(Appendable)
- */
- @Override
- public final String toString() {
- return toAppendable(null).toString();
- }
-
- /**
- * Appends a String representation of this to the given {@link StringBuffer} or
- * creates a new one if none is given.
- *
- * @param in the StringBuffer to append to, may be <code>null</code>
- * @return a StringBuffer, never <code>null</code>
- * @see #toAppendable(Appendable)
- */
- public StringBuffer toStringBuffer(StringBuffer in) {
- StringBuffer out = in;
- if (out == null) {
- out = new StringBuffer(36);
- }
- else {
- out.ensureCapacity(out.length() + 36);
- }
- return (StringBuffer) toAppendable(out);
- }
-
- /**
- * Appends a String representation of this object to the given {@link Appendable} object.
- * <p>
- * For reasons I'll probably never understand, Sun has decided to have a number of I/O classes implement
- * Appendable which forced them to destroy an otherwise nice and simple interface with {@link IOException}s.
- * <p>
- * I decided to ignore any possible IOExceptions in this method.
- *
- * @param a the Appendable object, may be <code>null</code>
- * @return an Appendable object, defaults to a {@link StringBuilder} if <code>a</code> is <code>null</code>
- */
- public Appendable toAppendable(Appendable a) {
- Appendable out = a;
- if (out == null) {
- out = new StringBuilder(36);
- }
- try {
- Hex.append(out, (int) (time >> 32)).append('-');
- Hex.append(out, (short) (time >> 16)).append('-');
- Hex.append(out, (short) time).append('-');
- Hex.append(out, (short) (clockSeqAndNode >> 48)).append('-');
- Hex.append(out, clockSeqAndNode, 12);
- }
- catch (IOException ex) {
- // What were they thinking?
- }
- return out;
- }
-
- /**
- * Returns a hash code of this UUID. The hash code is calculated by XOR'ing the
- * upper 32 bits of the time and clockSeqAndNode fields and the lower 32 bits of
- * the time and clockSeqAndNode fields.
- *
- * @return an <code>int</code> representing the hash code
- * @see java.lang.Object#hashCode()
- */
- @Override
- public int hashCode() {
- return (int) ((time >> 32) ^ time ^ (clockSeqAndNode >> 32) ^ clockSeqAndNode);
- }
-
- /**
- * Clones this UUID.
- *
- * @return a new UUID with identical values, never <code>null</code>
- */
- @Override
- public Object clone() {
- try {
- return super.clone();
- }
- catch (CloneNotSupportedException ex) {
- // One of Sun's most epic fails.
- return null;
- }
- }
-
- /**
- * Returns the time field of the UUID (upper 64 bits).
- *
- * @return the time field
- */
- public final long getTime() {
- return time;
- }
-
- /**
- * Returns the clock and node field of the UUID (lower 64 bits).
- *
- * @return the clockSeqAndNode field
- */
- public final long getClockSeqAndNode() {
- return clockSeqAndNode;
- }
-
- /**
- * Compares two Objects for equality.
- *
- * @see java.lang.Object#equals(Object)
- * @param obj the Object to compare this UUID with, may be <code>null</code>
- * @return <code>true</code> if the other Object is equal to this UUID,
- * <code>false</code> if not
- */
- @Override
- public boolean equals(Object obj) {
- if (!(obj instanceof UUID)) {
- return false;
- }
- return compareTo((UUID) obj) == 0;
- }
-
- /**
- * Returns the nil UUID (a UUID whose values are both set to zero).
- * <p>
- * Starting with version 2.0, this method does return a new UUID instance every
- * time it is called. Earlier versions returned one instance. This has now been
- * changed because this UUID has public, non-final instance fields. Returning a
- * new instance is therefore more safe.
- *
- * @return a nil UUID, never <code>null</code>
- */
- public static UUID nilUUID() {
- return new UUID(0, 0);
- }
-
-}
diff --git a/test/disabled/presentation/akka/src/com/eaio/uuid/UUIDGen.java b/test/disabled/presentation/akka/src/com/eaio/uuid/UUIDGen.java
deleted file mode 100644
index 7b63f65447..0000000000
--- a/test/disabled/presentation/akka/src/com/eaio/uuid/UUIDGen.java
+++ /dev/null
@@ -1,364 +0,0 @@
-/*
- * UUIDGen.java
- *
- * Created on 09.08.2003.
- *
- * eaio: UUID - an implementation of the UUID specification
- * Copyright (c) 2003-2009 Johann Burkard (jb@eaio.com) http://eaio.com.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-package com.eaio.uuid;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.InetAddress;
-import java.net.InterfaceAddress;
-import java.net.NetworkInterface;
-import java.net.SocketException;
-import java.net.UnknownHostException;
-import java.util.Enumeration;
-
-import com.eaio.util.lang.Hex;
-
-/**
- * This class contains methods to generate UUID fields. These methods have been
- * refactored out of {@link com.eaio.uuid.UUID}.
- * <p>
- * Starting with version 2, this implementation tries to obtain the MAC address
- * of the network card. Under Microsoft Windows, the <code>ifconfig</code>
- * command is used which may pop up a command window in Java Virtual Machines
- * prior to 1.4 once this class is initialized. The command window is closed
- * automatically.
- * <p>
- * The MAC address code has been tested extensively in Microsoft Windows,
- * Linux, Solaris 8, HP-UX 11, but should work in MacOS X and BSDs, too.
- * <p>
- * If you use JDK 6 or later, the code in {@link InterfaceAddress} will be used.
- *
- * @see <a href="http://johannburkard.de/software/uuid/">UUID</a>
- * @author <a href="mailto:jb@eaio.de">Johann Burkard</a>
- * @version $Id: UUIDGen.java 2914 2010-04-23 11:35:00Z johann $
- * @see com.eaio.uuid.UUID
- */
-public final class UUIDGen {
-
- /**
- * No instances needed.
- */
- private UUIDGen() {
- super();
- }
-
- /**
- * The last time value. Used to remove duplicate UUIDs.
- */
- private static long lastTime = Long.MIN_VALUE;
-
- /**
- * The cached MAC address.
- */
- private static String macAddress = null;
-
- /**
- * The current clock and node value.
- */
- private static long clockSeqAndNode = 0x8000000000000000L;
-
- static {
-
- try {
- Class.forName("java.net.InterfaceAddress");
- macAddress = Class.forName(
- "com.eaio.uuid.UUIDGen$HardwareAddressLookup").newInstance().toString();
- }
- catch (ExceptionInInitializerError err) {
- // Ignored.
- }
- catch (ClassNotFoundException ex) {
- // Ignored.
- }
- catch (LinkageError err) {
- // Ignored.
- }
- catch (IllegalAccessException ex) {
- // Ignored.
- }
- catch (InstantiationException ex) {
- // Ignored.
- }
- catch (SecurityException ex) {
- // Ignored.
- }
-
- if (macAddress == null) {
-
- Process p = null;
- BufferedReader in = null;
-
- try {
- String osname = System.getProperty("os.name", "");
-
- if (osname.startsWith("Windows")) {
- p = Runtime.getRuntime().exec(
- new String[] { "ipconfig", "/all" }, null);
- }
- // Solaris code must appear before the generic code
- else if (osname.startsWith("Solaris")
- || osname.startsWith("SunOS")) {
- String hostName = getFirstLineOfCommand(
- "uname", "-n" );
- if (hostName != null) {
- p = Runtime.getRuntime().exec(
- new String[] { "/usr/sbin/arp", hostName },
- null);
- }
- }
- else if (new File("/usr/sbin/lanscan").exists()) {
- p = Runtime.getRuntime().exec(
- new String[] { "/usr/sbin/lanscan" }, null);
- }
- else if (new File("/sbin/ifconfig").exists()) {
- p = Runtime.getRuntime().exec(
- new String[] { "/sbin/ifconfig", "-a" }, null);
- }
-
- if (p != null) {
- in = new BufferedReader(new InputStreamReader(
- p.getInputStream()), 128);
- String l = null;
- while ((l = in.readLine()) != null) {
- macAddress = MACAddressParser.parse(l);
- if (macAddress != null
- && Hex.parseShort(macAddress) != 0xff) {
- break;
- }
- }
- }
-
- }
- catch (SecurityException ex) {
- // Ignore it.
- }
- catch (IOException ex) {
- // Ignore it.
- }
- finally {
- if (p != null) {
- if (in != null) {
- try {
- in.close();
- }
- catch (IOException ex) {
- // Ignore it.
- }
- }
- try {
- p.getErrorStream().close();
- }
- catch (IOException ex) {
- // Ignore it.
- }
- try {
- p.getOutputStream().close();
- }
- catch (IOException ex) {
- // Ignore it.
- }
- p.destroy();
- }
- }
-
- }
-
- if (macAddress != null) {
- clockSeqAndNode |= Hex.parseLong(macAddress);
- }
- else {
- try {
- byte[] local = InetAddress.getLocalHost().getAddress();
- clockSeqAndNode |= (local[0] << 24) & 0xFF000000L;
- clockSeqAndNode |= (local[1] << 16) & 0xFF0000;
- clockSeqAndNode |= (local[2] << 8) & 0xFF00;
- clockSeqAndNode |= local[3] & 0xFF;
- }
- catch (UnknownHostException ex) {
- clockSeqAndNode |= (long) (Math.random() * 0x7FFFFFFF);
- }
- }
-
- // Skip the clock sequence generation process and use random instead.
-
- clockSeqAndNode |= (long) (Math.random() * 0x3FFF) << 48;
-
- }
-
- /**
- * Returns the current clockSeqAndNode value.
- *
- * @return the clockSeqAndNode value
- * @see UUID#getClockSeqAndNode()
- */
- public static long getClockSeqAndNode() {
- return clockSeqAndNode;
- }
-
- /**
- * Generates a new time field. Each time field is unique and larger than the
- * previously generated time field.
- *
- * @return a new time value
- * @see UUID#getTime()
- */
- public static long newTime() {
- return createTime(System.currentTimeMillis());
- }
-
- /**
- * Creates a new time field from the given timestamp. Note that even identical
- * values of <code>currentTimeMillis</code> will produce different time fields.
- *
- * @param currentTimeMillis the timestamp
- * @return a new time value
- * @see UUID#getTime()
- */
- public static synchronized long createTime(long currentTimeMillis) {
-
- long time;
-
- // UTC time
-
- long timeMillis = (currentTimeMillis * 10000) + 0x01B21DD213814000L;
-
- if (timeMillis > lastTime) {
- lastTime = timeMillis;
- }
- else {
- timeMillis = ++lastTime;
- }
-
- // time low
-
- time = timeMillis << 32;
-
- // time mid
-
- time |= (timeMillis & 0xFFFF00000000L) >> 16;
-
- // time hi and version
-
- time |= 0x1000 | ((timeMillis >> 48) & 0x0FFF); // version 1
-
- return time;
-
- }
-
- /**
- * Returns the MAC address. Not guaranteed to return anything.
- *
- * @return the MAC address, may be <code>null</code>
- */
- public static String getMACAddress() {
- return macAddress;
- }
-
- /**
- * Returns the first line of the shell command.
- *
- * @param commands the commands to run
- * @return the first line of the command
- * @throws IOException
- */
- static String getFirstLineOfCommand(String... commands) throws IOException {
-
- Process p = null;
- BufferedReader reader = null;
-
- try {
- p = Runtime.getRuntime().exec(commands);
- reader = new BufferedReader(new InputStreamReader(
- p.getInputStream()), 128);
-
- return reader.readLine();
- }
- finally {
- if (p != null) {
- if (reader != null) {
- try {
- reader.close();
- }
- catch (IOException ex) {
- // Ignore it.
- }
- }
- try {
- p.getErrorStream().close();
- }
- catch (IOException ex) {
- // Ignore it.
- }
- try {
- p.getOutputStream().close();
- }
- catch (IOException ex) {
- // Ignore it.
- }
- p.destroy();
- }
- }
-
- }
-
- /**
- * Scans MAC addresses for good ones.
- */
- static class HardwareAddressLookup {
-
- /**
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- String out = null;
- try {
- Enumeration<NetworkInterface> ifs = NetworkInterface.getNetworkInterfaces();
- if (ifs != null) {
- while (ifs.hasMoreElements()) {
- NetworkInterface iface = ifs.nextElement();
- byte[] hardware = iface.getHardwareAddress();
- if (hardware != null && hardware.length == 6
- && hardware[1] != (byte) 0xff) {
- out = Hex.append(new StringBuilder(36), hardware).toString();
- break;
- }
- }
- }
- }
- catch (SocketException ex) {
- // Ignore it.
- }
- return out;
- }
-
- }
-
-}
diff --git a/test/disabled/presentation/akka/src/com/eaio/uuid/UUIDHelper.java b/test/disabled/presentation/akka/src/com/eaio/uuid/UUIDHelper.java
deleted file mode 100644
index 7abbe85895..0000000000
--- a/test/disabled/presentation/akka/src/com/eaio/uuid/UUIDHelper.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.eaio.uuid;
-
-
-/**
-* com/eaio/uuid/UUIDHelper.java .
-* Generated by the IDL-to-Java compiler (portable), version "3.1"
-* from uuid.idl
-* Sonntag, 7. März 2004 21.35 Uhr CET
-*/
-
-
-/**
- * The UUID struct.
- */
-abstract public class UUIDHelper
-{
- private static String _id = "IDL:com/eaio/uuid/UUID:1.0";
-
- public static void insert (org.omg.CORBA.Any a, com.eaio.uuid.UUID that)
- {
- org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
- a.type (type ());
- write (out, that);
- a.read_value (out.create_input_stream (), type ());
- }
-
- public static com.eaio.uuid.UUID extract (org.omg.CORBA.Any a)
- {
- return read (a.create_input_stream ());
- }
-
- private static org.omg.CORBA.TypeCode __typeCode = null;
- private static boolean __active = false;
- synchronized public static org.omg.CORBA.TypeCode type ()
- {
- if (__typeCode == null)
- {
- synchronized (org.omg.CORBA.TypeCode.class)
- {
- if (__typeCode == null)
- {
- if (__active)
- {
- return org.omg.CORBA.ORB.init().create_recursive_tc ( _id );
- }
- __active = true;
- org.omg.CORBA.StructMember[] _members0 = new org.omg.CORBA.StructMember [2];
- org.omg.CORBA.TypeCode _tcOf_members0 = null;
- _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_longlong);
- _members0[0] = new org.omg.CORBA.StructMember (
- "time",
- _tcOf_members0,
- null);
- _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_longlong);
- _members0[1] = new org.omg.CORBA.StructMember (
- "clockSeqAndNode",
- _tcOf_members0,
- null);
- __typeCode = org.omg.CORBA.ORB.init ().create_struct_tc (com.eaio.uuid.UUIDHelper.id (), "UUID", _members0);
- __active = false;
- }
- }
- }
- return __typeCode;
- }
-
- public static String id ()
- {
- return _id;
- }
-
- public static com.eaio.uuid.UUID read (org.omg.CORBA.portable.InputStream istream)
- {
- com.eaio.uuid.UUID value = new com.eaio.uuid.UUID ();
- value.time = istream.read_longlong ();
- value.clockSeqAndNode = istream.read_longlong ();
- return value;
- }
-
- public static void write (org.omg.CORBA.portable.OutputStream ostream, com.eaio.uuid.UUID value)
- {
- ostream.write_longlong (value.time);
- ostream.write_longlong (value.clockSeqAndNode);
- }
-
-}
diff --git a/test/disabled/presentation/akka/src/com/eaio/uuid/UUIDHolder.java b/test/disabled/presentation/akka/src/com/eaio/uuid/UUIDHolder.java
deleted file mode 100644
index d5531f5e00..0000000000
--- a/test/disabled/presentation/akka/src/com/eaio/uuid/UUIDHolder.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.eaio.uuid;
-
-/**
-* com/eaio/uuid/UUIDHolder.java .
-* Generated by the IDL-to-Java compiler (portable), version "3.1"
-* from uuid.idl
-* Sonntag, 7. März 2004 21.35 Uhr CET
-*/
-
-
-/**
- * The UUID struct.
- */
-public final class UUIDHolder implements org.omg.CORBA.portable.Streamable
-{
- public com.eaio.uuid.UUID value = null;
-
- public UUIDHolder ()
- {
- }
-
- public UUIDHolder (com.eaio.uuid.UUID initialValue)
- {
- value = initialValue;
- }
-
- public void _read (org.omg.CORBA.portable.InputStream i)
- {
- value = com.eaio.uuid.UUIDHelper.read (i);
- }
-
- public void _write (org.omg.CORBA.portable.OutputStream o)
- {
- com.eaio.uuid.UUIDHelper.write (o, value);
- }
-
- public org.omg.CORBA.TypeCode _type ()
- {
- return com.eaio.uuid.UUIDHelper.type ();
- }
-
-}
diff --git a/test/disabled/presentation/ide-bug-1000450/Runner.scala b/test/disabled/presentation/ide-bug-1000450/Runner.scala
deleted file mode 100644
index 7c16a57f5c..0000000000
--- a/test/disabled/presentation/ide-bug-1000450/Runner.scala
+++ /dev/null
@@ -1,6 +0,0 @@
-import scala.tools.nsc.interactive.tests._
-
-import scala.tools.nsc.interactive.Response
-import scala.tools.nsc.util.Position
-
-object Test extends InteractiveTest \ No newline at end of file
diff --git a/test/disabled/presentation/ide-bug-1000450/src/Ranges.scala b/test/disabled/presentation/ide-bug-1000450/src/Ranges.scala
deleted file mode 100644
index 2295d06b9f..0000000000
--- a/test/disabled/presentation/ide-bug-1000450/src/Ranges.scala
+++ /dev/null
@@ -1,5 +0,0 @@
-object Ranges {
- // (1 to 10). // (1) this works as expected
-
- (1 to 10).toS /*!*/ // (2) this fails
-} \ No newline at end of file
diff --git a/test/disabled/presentation/ide-bug-1000508.check b/test/disabled/presentation/ide-bug-1000508.check
deleted file mode 100644
index 5f4d74fea9..0000000000
--- a/test/disabled/presentation/ide-bug-1000508.check
+++ /dev/null
@@ -1,163 +0,0 @@
-reload: Foo.scala
-
-askTypeCompletion at Foo.scala(2,4)
-================================================================================
-[response] aksTypeCompletion at (2,4)
-retrieved 163 members
-`lazy value numFractional[Double]`
-`method !=(x$1: Any)Boolean`
-`method !=(x$1: AnyRef)Boolean`
-`method !=(x: Byte)Boolean`
-`method !=(x: Char)Boolean`
-`method !=(x: Double)Boolean`
-`method !=(x: Float)Boolean`
-`method !=(x: Int)Boolean`
-`method !=(x: Long)Boolean`
-`method !=(x: Short)Boolean`
-`method ##()Int`
-`method %(x: Byte)Double`
-`method %(x: Char)Double`
-`method %(x: Double)Double`
-`method %(x: Float)Double`
-`method %(x: Int)Double`
-`method %(x: Long)Double`
-`method %(x: Short)Double`
-`method *(x: Byte)Double`
-`method *(x: Char)Double`
-`method *(x: Double)Double`
-`method *(x: Float)Double`
-`method *(x: Int)Double`
-`method *(x: Long)Double`
-`method *(x: Short)Double`
-`method +(x: Byte)Double`
-`method +(x: Char)Double`
-`method +(x: Double)Double`
-`method +(x: Float)Double`
-`method +(x: Int)Double`
-`method +(x: Long)Double`
-`method +(x: Short)Double`
-`method +(x: String)String`
-`method -(x: Byte)Double`
-`method -(x: Char)Double`
-`method -(x: Double)Double`
-`method -(x: Float)Double`
-`method -(x: Int)Double`
-`method -(x: Long)Double`
-`method -(x: Short)Double`
-`method ->[B](y: B)(Double, B)`
-`method /(x: Byte)Double`
-`method /(x: Char)Double`
-`method /(x: Double)Double`
-`method /(x: Float)Double`
-`method /(x: Int)Double`
-`method /(x: Long)Double`
-`method /(x: Short)Double`
-`method <(x: Byte)Boolean`
-`method <(x: Char)Boolean`
-`method <(x: Double)Boolean`
-`method <(x: Float)Boolean`
-`method <(x: Int)Boolean`
-`method <(x: Long)Boolean`
-`method <(x: Short)Boolean`
-`method <=(x: Byte)Boolean`
-`method <=(x: Char)Boolean`
-`method <=(x: Double)Boolean`
-`method <=(x: Float)Boolean`
-`method <=(x: Int)Boolean`
-`method <=(x: Long)Boolean`
-`method <=(x: Short)Boolean`
-`method ==(x$1: Any)Boolean`
-`method ==(x$1: AnyRef)Boolean`
-`method ==(x: Byte)Boolean`
-`method ==(x: Char)Boolean`
-`method ==(x: Double)Boolean`
-`method ==(x: Float)Boolean`
-`method ==(x: Int)Boolean`
-`method ==(x: Long)Boolean`
-`method ==(x: Short)Boolean`
-`method >(x: Byte)Boolean`
-`method >(x: Char)Boolean`
-`method >(x: Double)Boolean`
-`method >(x: Float)Boolean`
-`method >(x: Int)Boolean`
-`method >(x: Long)Boolean`
-`method >(x: Short)Boolean`
-`method >=(x: Byte)Boolean`
-`method >=(x: Char)Boolean`
-`method >=(x: Double)Boolean`
-`method >=(x: Float)Boolean`
-`method >=(x: Int)Boolean`
-`method >=(x: Long)Boolean`
-`method >=(x: Short)Boolean`
-`method abs=> Double`
-`method asInstanceOf[T0]=> T0`
-`method byteValue()Byte`
-`method ceil=> Double`
-`method clone()java.lang.Object`
-`method compare(y: Double)Int`
-`method compareTo(that: Double)Int`
-`method compareTo(x$1: java.lang.Double)Int`
-`method doubleValue()Double`
-`method ensuring(cond: Boolean)Double`
-`method ensuring(cond: Boolean, msg: => Any)Double`
-`method ensuring(cond: Double => Boolean)Double`
-`method ensuring(cond: Double => Boolean, msg: => Any)Double`
-`method eq(x$1: AnyRef)Boolean`
-`method equals(x$1: Any)Boolean`
-`method finalize()Unit`
-`method floatValue()Float`
-`method floor=> Double`
-`method formatted(fmtstr: String)String`
-`method hashCode()Int`
-`method intValue()Int`
-`method isInfinite()Boolean`
-`method isInfinity=> Boolean`
-`method isInstanceOf[T0]=> Boolean`
-`method isNaN()Boolean`
-`method isNegInfinity=> Boolean`
-`method isPosInfinity=> Boolean`
-`method isValidByte=> Boolean`
-`method isValidChar=> Boolean`
-`method isValidInt=> Boolean`
-`method isValidShort=> Boolean`
-`method isWhole()Boolean`
-`method longValue()Long`
-`method max(that: Double)Double`
-`method min(that: Double)Double`
-`method ne(x$1: AnyRef)Boolean`
-`method notify()Unit`
-`method notifyAll()Unit`
-`method round=> Long`
-`method shortValue()Short`
-`method signum=> Int`
-`method synchronized[T0](x$1: T0)T0`
-`method to(end: Double)Range.Partial[Double,scala.collection.immutable.NumericRange[Double]]`
-`method to(end: Double, step: Double)scala.collection.immutable.NumericRange.Inclusive[Double]`
-`method toByte=> Byte`
-`method toChar=> Char`
-`method toDegrees=> Double`
-`method toDouble=> Double`
-`method toFloat=> Float`
-`method toInt=> Int`
-`method toLong=> Long`
-`method toRadians=> Double`
-`method toShort=> Short`
-`method toString()java.lang.String`
-`method unary_+=> Double`
-`method unary_-=> Double`
-`method underlying()AnyRef`
-`method unifiedPrimitiveEquals(x: Any)Boolean`
-`method unifiedPrimitiveHashcode()Int`
-`method until(end: Double)Range.Partial[Double,scala.collection.immutable.NumericRange[Double]]`
-`method until(end: Double, step: Double)scala.collection.immutable.NumericRange.Exclusive[Double]`
-`method wait()Unit`
-`method wait(x$1: Long)Unit`
-`method wait(x$1: Long, x$2: Int)Unit`
-`method →[B](y: B)(Double, B)`
-`type ResultWithoutStepRange.Partial[Double,scala.collection.immutable.NumericRange[Double]]`
-`value integralNumNumeric.DoubleAsIfIntegral.type`
-`value ordOrdering[Double]`
-`value selfAny`
-`value selfDouble`
-`value xDouble`
-================================================================================
diff --git a/test/disabled/presentation/ide-bug-1000508/Runner.scala b/test/disabled/presentation/ide-bug-1000508/Runner.scala
deleted file mode 100644
index 1ef3cf9025..0000000000
--- a/test/disabled/presentation/ide-bug-1000508/Runner.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-import scala.tools.nsc.interactive.tests._
-
-object Test extends InteractiveTest \ No newline at end of file
diff --git a/test/disabled/presentation/ide-bug-1000508/src/Foo.scala b/test/disabled/presentation/ide-bug-1000508/src/Foo.scala
deleted file mode 100644
index cb5d9ad5dc..0000000000
--- a/test/disabled/presentation/ide-bug-1000508/src/Foo.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-object Foo {
- 1./*!*/
-} \ No newline at end of file
diff --git a/test/disabled/presentation/ide-bug-1000545/Runner.scala b/test/disabled/presentation/ide-bug-1000545/Runner.scala
deleted file mode 100644
index 1ef3cf9025..0000000000
--- a/test/disabled/presentation/ide-bug-1000545/Runner.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-import scala.tools.nsc.interactive.tests._
-
-object Test extends InteractiveTest \ No newline at end of file
diff --git a/test/disabled/presentation/ide-bug-1000545/src/CompletionFails.scala b/test/disabled/presentation/ide-bug-1000545/src/CompletionFails.scala
deleted file mode 100644
index 917fd43257..0000000000
--- a/test/disabled/presentation/ide-bug-1000545/src/CompletionFails.scala
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Presentation compiler returns the wrong answer for this test.
- *
- * Below is the current result of running this test:
- *
- * Mircos-iMac:test mirco$ ./partest files/presentation/ticket-1000545 --show-log | sed 's/< //'
- * Testing individual files
- * testing: [...]/files/presentation/ticket-1000545 [FAILED]
- * 1,8d0
- * reload: CompletionFails.scala
- *
- * askTypeCompletion at CompletionFails.scala(2,19)
- * ================================================================================
- * [response] aksTypeCompletion at (2,19)
- * retrieved 1 members
- * TypeMember(method <clinit>,()Unit,false,false,<none>)
- * ================================================================================
- *
- * 1 of 1 tests failed (elapsed time: 00:00:05)
- *
- * @note The expected result was the list of static methods for class @see java.io.Console
- */
-object CompletionFails {
- java.io.Console. /*!*/
-} \ No newline at end of file
diff --git a/test/disabled/presentation/ide-t1000620.check b/test/disabled/presentation/ide-t1000620.check
deleted file mode 100644
index 3518d7efc6..0000000000
--- a/test/disabled/presentation/ide-t1000620.check
+++ /dev/null
@@ -1,37 +0,0 @@
-reload: A.scala, B.scala
-
-askTypeCompletion at B.scala(6,6)
-================================================================================
-[response] aksTypeCompletion at (6,6)
-retrieved 36 members
-`method !=(x$1: Any)Boolean`
-`method !=(x$1: AnyRef)Boolean`
-`method ##()Int`
-`method +(other: String)java.lang.String`
-`method ->[B](y: B)(a.A, B)`
-`method ==(x$1: Any)Boolean`
-`method ==(x$1: AnyRef)Boolean`
-`method asInstanceOf[T0]=> T0`
-`method clone()java.lang.Object`
-`method ensuring(cond: Boolean)a.A`
-`method ensuring(cond: Boolean, msg: => Any)a.A`
-`method ensuring(cond: a.A => Boolean)a.A`
-`method ensuring(cond: a.A => Boolean, msg: => Any)a.A`
-`method eq(x$1: AnyRef)Boolean`
-`method equals(x$1: Any)Boolean`
-`method finalize()Unit`
-`method formatted(fmtstr: String)String`
-`method hashCode()Int`
-`method isInstanceOf[T0]=> Boolean`
-`method ne(x$1: AnyRef)Boolean`
-`method notify()Unit`
-`method notifyAll()Unit`
-`method synchronized[T0](x$1: T0)T0`
-`method toString()java.lang.String`
-`method wait()Unit`
-`method wait(x$1: Long)Unit`
-`method wait(x$1: Long, x$2: Int)Unit`
-`method →[B](y: B)(a.A, B)`
-`value selfAny`
-`value xa.A`
-================================================================================
diff --git a/test/disabled/presentation/ide-t1000620/Runner.scala b/test/disabled/presentation/ide-t1000620/Runner.scala
deleted file mode 100644
index 1ef3cf9025..0000000000
--- a/test/disabled/presentation/ide-t1000620/Runner.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-import scala.tools.nsc.interactive.tests._
-
-object Test extends InteractiveTest \ No newline at end of file
diff --git a/test/disabled/presentation/ide-t1000620/src/a/A.scala b/test/disabled/presentation/ide-t1000620/src/a/A.scala
deleted file mode 100644
index 42a9b34330..0000000000
--- a/test/disabled/presentation/ide-t1000620/src/a/A.scala
+++ /dev/null
@@ -1,5 +0,0 @@
-package a
-class A {
- private var a= 0
- protected var b= 0
-}
diff --git a/test/disabled/presentation/ide-t1000620/src/b/B.scala b/test/disabled/presentation/ide-t1000620/src/b/B.scala
deleted file mode 100644
index b579f97d6f..0000000000
--- a/test/disabled/presentation/ide-t1000620/src/b/B.scala
+++ /dev/null
@@ -1,8 +0,0 @@
-package b
-import a.A
-class B {
- def main(args: Array[String]) {
- val a = new A()
- a./*!*/
- }
-}
diff --git a/test/disabled/presentation/shutdown-deadlock.check b/test/disabled/presentation/shutdown-deadlock.check
deleted file mode 100644
index ddcb4ff59b..0000000000
--- a/test/disabled/presentation/shutdown-deadlock.check
+++ /dev/null
@@ -1,3 +0,0 @@
-reload: arrays.scala
-reload: arrays.scala
-No timeouts
diff --git a/test/disabled/presentation/shutdown-deadlock/ShutdownDeadlockTest.scala b/test/disabled/presentation/shutdown-deadlock/ShutdownDeadlockTest.scala
deleted file mode 100644
index cef9d2a5ed..0000000000
--- a/test/disabled/presentation/shutdown-deadlock/ShutdownDeadlockTest.scala
+++ /dev/null
@@ -1,45 +0,0 @@
-import scala.tools.nsc.interactive._
-import tests._
-
-object Test extends InteractiveTest {
- val Reps = 30
- import compiler._
-
- def askSomething(): Response[Tree] = {
- // println("*")
- Thread.sleep(50)
- ask { compiler.askStructure(true)(sourceFiles.head, _) }
- }
-
- def fireAsks() {
- val jobs1 = for (i <- 1 until Reps) yield {
- if (i % 10 == 0) {
- askReload(sourceFiles)
- }
- askSomething
- }
-
- for ((j, i) <- jobs1.zipWithIndex) {
- j.get(40000) match {
- case None =>
- println(i + ": TIMEOUT")
- exit(1) // no need to delay the test any longer
- case r =>
- }
- }
- compiler.askShutdown()
-
- println("No timeouts")
- }
-
- override def main(args: Array[String]) {
- new Thread("Asking") {
- override def run() {
- fireAsks()
- }
- }.start()
-
- Thread.sleep(800)
- compiler.askShutdown()
- }
-} \ No newline at end of file
diff --git a/test/disabled/presentation/shutdown-deadlock/src/arrays.scala b/test/disabled/presentation/shutdown-deadlock/src/arrays.scala
deleted file mode 100644
index ecebc78a6f..0000000000
--- a/test/disabled/presentation/shutdown-deadlock/src/arrays.scala
+++ /dev/null
@@ -1,937 +0,0 @@
-//############################################################################
-// Arrays
-//############################################################################
-
-//############################################################################
-
-object Test {
-
- //##########################################################################
- // Types
-
- type Strings = List[String]
- type Map = scala.collection.Map[Int, Any]
- type HashMap = scala.collection.mutable.HashMap[Int, Any]
- type TreeMap = scala.collection.immutable.TreeMap[Int, Any]
-
- //##########################################################################
- // Identity Functions
-
- def id_Ta_T[T <: Any ](x: T): T = x;
- def id_Tr_T[T <: AnyRef ](x: T): T = x;
- def id_To_T[T <: Object ](x: T): T = x;
-
- def id_Ta_a[T <: Any ](x: T): Any = x;
- def id_Tr_a[T <: AnyRef ](x: T): Any = x;
- def id_To_a[T <: Object ](x: T): Any = x;
-
- def id_Tr_r[T <: AnyRef ](x: T): AnyRef = x;
- def id_To_r[T <: Object ](x: T): AnyRef = x;
-
- def id_To_o[T <: Object ](x: T): Object = x;
-
- def id_TSa_T [S <: Any , T <: Array[S]](x: T): T = x;
- def id_TSv_T [S <: AnyVal , T <: Array[S]](x: T): T = x;
- def id_TSr_T [S <: AnyRef , T <: Array[S]](x: T): T = x;
- def id_TSo_T [S <: Object , T <: Array[S]](x: T): T = x;
- def id_TSm_T [S <: Map , T <: Array[S]](x: T): T = x;
- def id_TSn_T [S <: Strings, T <: Array[S]](x: T): T = x;
-
- def id_TSa_Ss[S <: Any , T <: Array[S]](x: T): Array[S] = x;
- def id_TSv_Ss[S <: AnyVal , T <: Array[S]](x: T): Array[S] = x;
- def id_TSr_Ss[S <: AnyRef , T <: Array[S]](x: T): Array[S] = x;
- def id_TSo_Ss[S <: Object , T <: Array[S]](x: T): Array[S] = x;
- def id_TSm_Ss[S <: Map , T <: Array[S]](x: T): Array[S] = x;
- def id_TSn_Ss[S <: Strings, T <: Array[S]](x: T): Array[S] = x;
-
- def id_TSa_a [S <: Any , T <: Array[S]](x: T): Any = x;
- def id_TSv_a [S <: AnyVal , T <: Array[S]](x: T): Any = x;
- def id_TSr_a [S <: AnyRef , T <: Array[S]](x: T): Any = x;
- def id_TSo_a [S <: Object , T <: Array[S]](x: T): Any = x;
- def id_TSm_a [S <: Map , T <: Array[S]](x: T): Any = x;
- def id_TSn_a [S <: Strings, T <: Array[S]](x: T): Any = x;
-
- def id_TSa_r [S <: Any , T <: Array[S]](x: T): AnyRef = x;
- def id_TSv_r [S <: AnyVal , T <: Array[S]](x: T): AnyRef = x;
- def id_TSr_r [S <: AnyRef , T <: Array[S]](x: T): AnyRef = x;
- def id_TSo_r [S <: Object , T <: Array[S]](x: T): AnyRef = x;
- def id_TSm_r [S <: Map , T <: Array[S]](x: T): AnyRef = x;
- def id_TSn_r [S <: Strings, T <: Array[S]](x: T): AnyRef = x;
-
- def id_TSa_o [S <: Any , T <: Array[S]](x: T): Object = x;
- def id_TSv_o [S <: AnyVal , T <: Array[S]](x: T): Object = x;
- def id_TSr_o [S <: AnyRef , T <: Array[S]](x: T): Object = x;
- def id_TSo_o [S <: Object , T <: Array[S]](x: T): Object = x;
- def id_TSm_o [S <: Map , T <: Array[S]](x: T): Object = x;
- def id_TSn_o [S <: Strings, T <: Array[S]](x: T): Object = x;
-
- def id_Sas_Ss[S <: Any ](xs: Array[S]): Array[S] = xs;
- def id_Svs_Ss[S <: AnyVal ](xs: Array[S]): Array[S] = xs;
- def id_Srs_Ss[S <: AnyRef ](xs: Array[S]): Array[S] = xs;
- def id_Sos_Ss[S <: Object ](xs: Array[S]): Array[S] = xs;
- def id_Sms_Ss[S <: Map ](xs: Array[S]): Array[S] = xs;
- def id_Sns_Ss[S <: Strings](xs: Array[S]): Array[S] = xs;
-
- def id_Sas_a [S <: Any ](xs: Array[S]): Any = xs;
- def id_Svs_a [S <: AnyVal ](xs: Array[S]): Any = xs;
- def id_Srs_a [S <: AnyRef ](xs: Array[S]): Any = xs;
- def id_Sos_a [S <: Object ](xs: Array[S]): Any = xs;
- def id_Sms_a [S <: Map ](xs: Array[S]): Any = xs;
- def id_Sns_a [S <: Strings](xs: Array[S]): Any = xs;
-
- def id_Sas_r [S <: Any ](xs: Array[S]): AnyRef = xs;
- def id_Svs_r [S <: AnyVal ](xs: Array[S]): AnyRef = xs;
- def id_Srs_r [S <: AnyRef ](xs: Array[S]): AnyRef = xs;
- def id_Sos_r [S <: Object ](xs: Array[S]): AnyRef = xs;
- def id_Sms_r [S <: Map ](xs: Array[S]): AnyRef = xs;
- def id_Sns_r [S <: Strings](xs: Array[S]): AnyRef = xs;
-
- def id_Sas_o [S <: Any ](xs: Array[S]): Object = xs;
- def id_Svs_o [S <: AnyVal ](xs: Array[S]): Object = xs;
- def id_Srs_o [S <: AnyRef ](xs: Array[S]): Object = xs;
- def id_Sos_o [S <: Object ](xs: Array[S]): Object = xs;
- def id_Sms_o [S <: Map ](xs: Array[S]): Object = xs;
- def id_Sns_o [S <: Strings](xs: Array[S]): Object = xs;
-
- //##########################################################################
- // Generic Checks
-
- type Check[T] = Array[T] => Unit;
-
- var checks: Int = 0;
-
- def check(test0: Boolean, actual: Any, expected: Any) {
- val test1: Boolean = actual == expected;
- if (!test0 || !test1) {
- val s0 = if (test0) "ok" else "KO";
- val s1 = if (test1) "ok" else "KO";
- val s2 = actual.toString();
- val s3 = expected.toString();
- error(s0 + " - " + s1 + ": " + s2 + " != " + s3);
- }
- checks += 1
- }
-
- def check_Ta[T <: Any ](xs: Array[T], l: Int, x0: T, c: Check[T]) {
- check(xs.length == l, xs.length, l);
- check(xs(0) == x0, xs(0), x0);
- c(xs);
- }
-
- def check_Tv[T <: AnyVal ](xs: Array[T], l: Int, x0: T, c: Check[T]) {
- check(xs.length == l, xs.length, l);
- check(xs(0) == x0, xs(0), x0);
- check_Ta(xs, l, x0, c);
- c(xs);
- }
-
- def check_Tr[T <: AnyRef ](xs: Array[T], l: Int, x0: T, c: Check[T]) {
- check(xs.length == l, xs.length, l);
- check(xs(0) == x0, xs(0), x0);
- check_Ta(xs, l, x0, c);
- c(xs);
- }
-
- def check_To[T <: Object ](xs: Array[T], l: Int, x0: T, c: Check[T]) {
- check(xs.length == l, xs.length, l);
- check(xs(0) == x0, xs(0), x0);
- check_Ta(xs, l, x0, c);
- check_Tr(xs, l, x0, c);
- c(xs);
- }
-
- def check_Tm[T <: Map ](xs: Array[T], l: Int, x0: T, c: Check[T]) {
- check(xs.length == l, xs.length, l)
- check(xs(0) == x0, xs(0), x0)
- check_Ta(xs, l, x0, c)
- check_Tr(xs, l, x0, c)
- check_To(xs, l, x0, c)
- c(xs)
- }
-
- def check_Tn[T <: Strings](xs: Array[T], l: Int, x0: T, c: Check[T]) {
- check(xs.length == l, xs.length, l)
- check(xs(0) == x0, xs(0), x0)
- check_Ta(xs, l, x0, c)
- check_Tr(xs, l, x0, c)
- check_To(xs, l, x0, c)
- c(xs)
- }
-
- def checkT2368() {
- val arr = Array(1, 2, 3)
- arr(0) += 1
- assert(arr(0) == 2)
- }
-
- //##########################################################################
- // Values
-
- val u0: Unit = ();
- val u1: Unit = ();
-
- val z0: Boolean = false;
- val z1: Boolean = true;
-
- val b0: Byte = Byte.MinValue;
- val b1: Byte = 1;
- val b2: Byte = Byte.MaxValue;
-
- val s0: Short = Short.MinValue;
- val s1: Short = 2;
- val s2: Short = Short.MaxValue;
-
- val c0: Char = Char.MinValue;
- val c1: Char = '3';
- val c2: Char = Char.MaxValue;
-
- val i0: Int = Int.MinValue;
- val i1: Int = 4;
- val i2: Int = Int.MinValue;
-
- val l0: Long = Long.MinValue;
- val l1: Int = 5;
- val l2: Long = Long.MaxValue;
-
- val f0: Float = Float.MinValue;
- val f1: Int = 6;
- val f2: Float = Float.MaxValue;
-
- val d0: Double = Double.MinValue;
- val d1: Int = 7;
- val d2: Double = Double.MaxValue;
-
- val a0: Unit = ();
- val a1: Boolean = false;
- val a2: Int = 0;
- val a3: Null = null;
- val a4: String = "a-z";
- val a5: Symbol = 'token;
- val a6: HashMap = new HashMap();
- val a7: TreeMap = scala.collection.immutable.TreeMap.empty[Int, Any];
- val a8: Strings = List("a", "z");
-
- val v0: Unit = ();
- val v1: Boolean = false;
- val v2: Int = 0;
- val v3: Long = l2;
- val v4: Float = f2;
- val v5: Double = d2;
-
- val r0: Null = a3;
- val r1: String = a4;
- val r2: Symbol = a5;
- val r3: HashMap = a6;
- val r4: TreeMap = a7;
- val r5: Strings = a8;
-
- val o0: Null = r0;
- val o1: String = r1;
- val o2: Symbol = r2;
- val o3: HashMap = r3;
- val o4: TreeMap = r4;
- val o5: Strings = r5;
-
- val m0: Null = r0;
- val m1: HashMap = r3;
- val m2: TreeMap = r4;
-
- val n0: Null = r0;
- val n1: Strings = r5;
- val n2: Nil.type= Nil;
-
- //##########################################################################
- // Specific Checks
-
- def ucheck(xs: Array[Unit ]): Unit = {
- check(xs.length == 2, xs.length, 2);
- check(xs(0) == u0, xs(0), u0);
- check(xs(1) == u1, xs(1), u1);
- }
-
- def zcheck(xs: Array[Boolean]): Unit = {
- check(xs.length == 2, xs.length, 2);
- check(xs(0) == z0, xs(0), z0);
- check(xs(1) == z1, xs(1), z1);
- }
-
- def bcheck(xs: Array[Byte ]): Unit = {
- check(xs.length == 3, xs.length, 3);
- check(xs(0) == b0, xs(0), b0);
- check(xs(1) == b1, xs(1), b1);
- check(xs(2) == b2, xs(2), b2);
- }
-
- def scheck(xs: Array[Short ]): Unit = {
- check(xs.length == 3, xs.length, 3);
- check(xs(0) == s0, xs(0), s0);
- check(xs(1) == s1, xs(1), s1);
- check(xs(2) == s2, xs(2), s2);
- }
-
- def ccheck(xs: Array[Char ]): Unit = {
- check(xs.length == 3, xs.length, 3);
- check(xs(0) == c0, xs(0), c0);
- check(xs(1) == c1, xs(1), c1);
- check(xs(2) == c2, xs(2), c2);
- }
-
- def icheck(xs: Array[Int ]): Unit = {
- check(xs.length == 3, xs.length, 3);
- check(xs(0) == i0, xs(0), i0);
- check(xs(1) == i1, xs(1), i1);
- check(xs(2) == i2, xs(2), i2);
- }
-
- def lcheck(xs: Array[Long ]): Unit = {
- check(xs.length == 3, xs.length, 3);
- check(xs(0) == l0, xs(0), l0);
- check(xs(1) == l1, xs(1), l1: Long); // !!! : Long
- check(xs(2) == l2, xs(2), l2);
- }
-
- def fcheck(xs: Array[Float ]): Unit = {
- check(xs.length == 3, xs.length, 3);
- check(xs(0) == f0, xs(0), f0);
- check(xs(1) == f1, xs(1), f1: Float); // !!! : Float
- check(xs(2) == f2, xs(2), f2);
- }
-
- def dcheck(xs: Array[Double ]): Unit = {
- check(xs.length == 3, xs.length, 3);
- check(xs(0) == d0, xs(0), d0);
- check(xs(1) == d1, xs(1), d1: Double); // !!! : Double
- check(xs(2) == d2, xs(2), d2);
- }
-
- def rcheck(xs: Array[AnyRef ]): Unit = {
- check(xs.length == 6, xs.length, 6);
- check(xs(0) == r0, xs(0), r0);
- check(xs(1) == r1, xs(1), r1);
- check(xs(2) == r2, xs(2), r2);
- check(xs(3) == r3, xs(3), r3);
- check(xs(4) == r4, xs(4), r4);
- check(xs(5) == r5, xs(5), r5);
- }
-
- def ocheck(xs: Array[Object ]): Unit = {
- check(xs.length == 6, xs.length, 6);
- check(xs(0) == o0, xs(0), o0);
- check(xs(1) == o1, xs(1), o1);
- check(xs(2) == o2, xs(2), o2);
- check(xs(3) == o3, xs(3), o3);
- check(xs(4) == o4, xs(4), o4);
- check(xs(5) == o5, xs(5), o5);
- }
-
- def mcheck(xs: Array[Map ]): Unit = {
- check(xs.length == 3, xs.length, 3);
- check(xs(0) == m0, xs(0), m0);
- check(xs(1) == m1, xs(1), m1);
- check(xs(2) == m2, xs(2), m2);
- }
-
- def ncheck(xs: Array[Strings]) {
- check(xs.length == 3, xs.length, 3)
- check(xs(0) == n0, xs(0), n0)
- check(xs(1) == n1, xs(1), n1)
- check(xs(2) == n2, xs(2), n2)
- }
-
- //##########################################################################
- // Miscellaneous checks
-
- def checkZip {
- val zipped = Array("a", "b", "c").zip(Array(1, 2))
- val expected = Array(("a",1), ("b",2))
- check(zipped sameElements expected, zipped.toList, expected.toList)
- }
-
- def checkConcat { // ticket #713
- val x1 = Array.concat(Array(1, 2), Array(3, 4))
- val y1 = Array(1, 2, 3, 4)
- check(x1 sameElements y1, x1.toList, y1.toList)
- }
-
- //##########################################################################
- // Arrays
-
- val uarray: Array[Unit ] = Array(u0, u1);
- val zarray: Array[Boolean] = Array(z0, z1);
- val barray: Array[Byte ] = Array(b0, b1, b2);
- val sarray: Array[Short ] = Array(s0, s1, s2);
- val carray: Array[Char ] = Array(c0, c1, c2);
- val iarray: Array[Int ] = Array(i0, i1, i2);
- val larray: Array[Long ] = Array(l0, l1, l2);
- val farray: Array[Float ] = Array(f0, f1, f2);
- val darray: Array[Double ] = Array(d0, d1, d2);
- val rarray: Array[AnyRef ] = Array(r0, r1, r2, r4, r4, r5);
- val oarray: Array[Object ] = Array(o0, o1, o2, o4, o4, o5);
- val marray: Array[Map ] = Array(m0, m1, m2);
- val narray: Array[Strings] = Array(n0, n1, n2);
-
- //##########################################################################
- // Main
-
- def main(args: Array[String]): Unit = {
-
- //######################################################################
-
- ucheck(uarray);
- zcheck(zarray);
- bcheck(barray);
- scheck(sarray);
- ccheck(carray);
- icheck(iarray);
- lcheck(larray);
- fcheck(farray);
- dcheck(darray);
- rcheck(rarray);
- ocheck(oarray);
- mcheck(marray);
- ncheck(narray);
-
- //######################################################################
-
- ucheck(id_Ta_T(uarray));
- zcheck(id_Ta_T(zarray));
- bcheck(id_Ta_T(barray));
- scheck(id_Ta_T(sarray));
- ccheck(id_Ta_T(carray));
- icheck(id_Ta_T(iarray));
- lcheck(id_Ta_T(larray));
- fcheck(id_Ta_T(farray));
- dcheck(id_Ta_T(darray));
- rcheck(id_Ta_T(rarray));
- ocheck(id_Ta_T(oarray));
- mcheck(id_Ta_T(marray));
- ncheck(id_Ta_T(narray));
-
- ucheck(id_Tr_T(uarray));
- zcheck(id_Tr_T(zarray));
- bcheck(id_Tr_T(barray));
- scheck(id_Tr_T(sarray));
- ccheck(id_Tr_T(carray));
- icheck(id_Tr_T(iarray));
- lcheck(id_Tr_T(larray));
- fcheck(id_Tr_T(farray));
- dcheck(id_Tr_T(darray));
- rcheck(id_Tr_T(rarray));
- ocheck(id_Tr_T(oarray));
- mcheck(id_Tr_T(marray));
- ncheck(id_Tr_T(narray));
-
- ucheck(id_To_T(uarray));
- zcheck(id_To_T(zarray));
- bcheck(id_To_T(barray));
- scheck(id_To_T(sarray));
- ccheck(id_To_T(carray));
- icheck(id_To_T(iarray));
- lcheck(id_To_T(larray));
- fcheck(id_To_T(farray));
- dcheck(id_To_T(darray));
- rcheck(id_To_T(rarray));
- ocheck(id_To_T(oarray));
- mcheck(id_To_T(marray));
- ncheck(id_To_T(narray));
-
- ucheck(id_Ta_a(uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_Ta_a(zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_Ta_a(barray).asInstanceOf[Array[Byte ]]);
- scheck(id_Ta_a(sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_Ta_a(carray).asInstanceOf[Array[Char ]]);
- icheck(id_Ta_a(iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_Ta_a(larray).asInstanceOf[Array[Long ]]);
- fcheck(id_Ta_a(farray).asInstanceOf[Array[Float ]]);
- dcheck(id_Ta_a(darray).asInstanceOf[Array[Double ]]);
- rcheck(id_Ta_a(rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_Ta_a(oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_Ta_a(marray).asInstanceOf[Array[Map ]]);
- ncheck(id_Ta_a(narray).asInstanceOf[Array[Strings]]);
-
- ucheck(id_Tr_a(uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_Tr_a(zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_Tr_a(barray).asInstanceOf[Array[Byte ]]);
- scheck(id_Tr_a(sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_Tr_a(carray).asInstanceOf[Array[Char ]]);
- icheck(id_Tr_a(iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_Tr_a(larray).asInstanceOf[Array[Long ]]);
- fcheck(id_Tr_a(farray).asInstanceOf[Array[Float ]]);
- dcheck(id_Tr_a(darray).asInstanceOf[Array[Double ]]);
- rcheck(id_Tr_a(rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_Tr_a(oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_Tr_a(marray).asInstanceOf[Array[Map ]]);
- ncheck(id_Tr_a(narray).asInstanceOf[Array[Strings]]);
-
- ucheck(id_To_a(uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_To_a(zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_To_a(barray).asInstanceOf[Array[Byte ]]);
- scheck(id_To_a(sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_To_a(carray).asInstanceOf[Array[Char ]]);
- icheck(id_To_a(iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_To_a(larray).asInstanceOf[Array[Long ]]);
- fcheck(id_To_a(farray).asInstanceOf[Array[Float ]]);
- dcheck(id_To_a(darray).asInstanceOf[Array[Double ]]);
- rcheck(id_To_a(rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_To_a(oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_To_a(marray).asInstanceOf[Array[Map ]]);
- ncheck(id_To_a(narray).asInstanceOf[Array[Strings]]);
-
- ucheck(id_Tr_r(uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_Tr_r(zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_Tr_r(barray).asInstanceOf[Array[Byte ]]);
- scheck(id_Tr_r(sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_Tr_r(carray).asInstanceOf[Array[Char ]]);
- icheck(id_Tr_r(iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_Tr_r(larray).asInstanceOf[Array[Long ]]);
- fcheck(id_Tr_r(farray).asInstanceOf[Array[Float ]]);
- dcheck(id_Tr_r(darray).asInstanceOf[Array[Double ]]);
- rcheck(id_Tr_r(rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_Tr_r(oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_Tr_r(marray).asInstanceOf[Array[Map ]]);
- ncheck(id_Tr_r(narray).asInstanceOf[Array[Strings]]);
-
- ucheck(id_To_r(uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_To_r(zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_To_r(barray).asInstanceOf[Array[Byte ]]);
- scheck(id_To_r(sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_To_r(carray).asInstanceOf[Array[Char ]]);
- icheck(id_To_r(iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_To_r(larray).asInstanceOf[Array[Long ]]);
- fcheck(id_To_r(farray).asInstanceOf[Array[Float ]]);
- dcheck(id_To_r(darray).asInstanceOf[Array[Double ]]);
- rcheck(id_To_r(rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_To_r(oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_To_r(marray).asInstanceOf[Array[Map ]]);
- ncheck(id_To_r(narray).asInstanceOf[Array[Strings]]);
-
- ucheck(id_To_o(uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_To_o(zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_To_o(barray).asInstanceOf[Array[Byte ]]);
- scheck(id_To_o(sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_To_o(carray).asInstanceOf[Array[Char ]]);
- icheck(id_To_o(iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_To_o(larray).asInstanceOf[Array[Long ]]);
- fcheck(id_To_o(farray).asInstanceOf[Array[Float ]]);
- dcheck(id_To_o(darray).asInstanceOf[Array[Double ]]);
- rcheck(id_To_o(rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_To_o(oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_To_o(marray).asInstanceOf[Array[Map ]]);
- ncheck(id_To_o(narray).asInstanceOf[Array[Strings]]);
-
- //######################################################################
-
- ucheck(id_TSa_T [Unit , Array[Unit ]](uarray));
- zcheck(id_TSa_T [Boolean, Array[Boolean]](zarray));
- bcheck(id_TSa_T [Byte , Array[Byte ]](barray));
- scheck(id_TSa_T [Short , Array[Short ]](sarray));
- ccheck(id_TSa_T [Char , Array[Char ]](carray));
- icheck(id_TSa_T [Int , Array[Int ]](iarray));
- lcheck(id_TSa_T [Long , Array[Long ]](larray));
- fcheck(id_TSa_T [Float , Array[Float ]](farray));
- dcheck(id_TSa_T [Double , Array[Double ]](darray));
- rcheck(id_TSa_T [AnyRef , Array[AnyRef ]](rarray));
- ocheck(id_TSa_T [Object , Array[Object ]](oarray));
- mcheck(id_TSa_T [Map , Array[Map ]](marray));
- ncheck(id_TSa_T [Strings, Array[Strings]](narray));
-
- ucheck(id_TSv_T [Unit , Array[Unit ]](uarray));
- zcheck(id_TSv_T [Boolean, Array[Boolean]](zarray));
- bcheck(id_TSv_T [Byte , Array[Byte ]](barray));
- scheck(id_TSv_T [Short , Array[Short ]](sarray));
- ccheck(id_TSv_T [Char , Array[Char ]](carray));
- icheck(id_TSv_T [Int , Array[Int ]](iarray));
- lcheck(id_TSv_T [Long , Array[Long ]](larray));
- fcheck(id_TSv_T [Float , Array[Float ]](farray));
- dcheck(id_TSv_T [Double , Array[Double ]](darray));
-
- rcheck(id_TSr_T [AnyRef , Array[AnyRef ]](rarray));
- ocheck(id_TSr_T [Object , Array[Object ]](oarray));
- mcheck(id_TSr_T [Map , Array[Map ]](marray));
- ncheck(id_TSr_T [Strings, Array[Strings]](narray));
-
- rcheck(id_TSo_T [AnyRef , Array[AnyRef ]](rarray));
- ocheck(id_TSo_T [Object , Array[Object ]](oarray));
- mcheck(id_TSo_T [Map , Array[Map ]](marray));
- ncheck(id_TSo_T [Strings, Array[Strings]](narray));
-
- mcheck(id_TSm_T [Map , Array[Map ]](marray));
-
- ncheck(id_TSn_T [Strings, Array[Strings]](narray));
-
- //######################################################################
-
- ucheck(id_TSa_Ss[Unit , Array[Unit ]](uarray));
- zcheck(id_TSa_Ss[Boolean, Array[Boolean]](zarray));
- bcheck(id_TSa_Ss[Byte , Array[Byte ]](barray));
- scheck(id_TSa_Ss[Short , Array[Short ]](sarray));
- ccheck(id_TSa_Ss[Char , Array[Char ]](carray));
- icheck(id_TSa_Ss[Int , Array[Int ]](iarray));
- lcheck(id_TSa_Ss[Long , Array[Long ]](larray));
- fcheck(id_TSa_Ss[Float , Array[Float ]](farray));
- dcheck(id_TSa_Ss[Double , Array[Double ]](darray));
- rcheck(id_TSa_Ss[AnyRef , Array[AnyRef ]](rarray));
- ocheck(id_TSa_Ss[Object , Array[Object ]](oarray));
- mcheck(id_TSa_Ss[Map , Array[Map ]](marray));
- ncheck(id_TSa_Ss[Strings, Array[Strings]](narray));
-
- ucheck(id_TSv_Ss[Unit , Array[Unit ]](uarray));
- zcheck(id_TSv_Ss[Boolean, Array[Boolean]](zarray));
- bcheck(id_TSv_Ss[Byte , Array[Byte ]](barray));
- scheck(id_TSv_Ss[Short , Array[Short ]](sarray));
- ccheck(id_TSv_Ss[Char , Array[Char ]](carray));
- icheck(id_TSv_Ss[Int , Array[Int ]](iarray));
- lcheck(id_TSv_Ss[Long , Array[Long ]](larray));
- fcheck(id_TSv_Ss[Float , Array[Float ]](farray));
- dcheck(id_TSv_Ss[Double , Array[Double ]](darray));
-
- rcheck(id_TSr_Ss[AnyRef , Array[AnyRef ]](rarray));
- ocheck(id_TSr_Ss[Object , Array[Object ]](oarray));
- mcheck(id_TSr_Ss[Map , Array[Map ]](marray));
- ncheck(id_TSr_Ss[Strings, Array[Strings]](narray));
-
- rcheck(id_TSo_Ss[AnyRef , Array[AnyRef ]](rarray));
- ocheck(id_TSo_Ss[Object , Array[Object ]](oarray));
- mcheck(id_TSo_Ss[Map , Array[Map ]](marray));
- ncheck(id_TSo_Ss[Strings, Array[Strings]](narray));
-
- mcheck(id_TSm_Ss[Map , Array[Map ]](marray));
-
- ncheck(id_TSn_Ss[Strings, Array[Strings]](narray));
-
- //######################################################################
-
- ucheck(id_TSa_a [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_TSa_a [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_TSa_a [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
- scheck(id_TSa_a [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_TSa_a [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
- icheck(id_TSa_a [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_TSa_a [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
- fcheck(id_TSa_a [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
- dcheck(id_TSa_a [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
- rcheck(id_TSa_a [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSa_a [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSa_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSa_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- ucheck(id_TSv_a [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_TSv_a [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_TSv_a [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
- scheck(id_TSv_a [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_TSv_a [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
- icheck(id_TSv_a [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_TSv_a [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
- fcheck(id_TSv_a [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
- dcheck(id_TSv_a [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
-
- rcheck(id_TSr_a [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSr_a [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSr_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSr_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- rcheck(id_TSo_a [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSo_a [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSo_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSo_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- mcheck(id_TSm_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
-
- ncheck(id_TSn_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- //######################################################################
-
- ucheck(id_TSa_r [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_TSa_r [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_TSa_r [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
- scheck(id_TSa_r [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_TSa_r [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
- icheck(id_TSa_r [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_TSa_r [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
- fcheck(id_TSa_r [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
- dcheck(id_TSa_r [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
- rcheck(id_TSa_r [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSa_r [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSa_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSa_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- ucheck(id_TSv_r [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_TSv_r [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_TSv_r [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
- scheck(id_TSv_r [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_TSv_r [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
- icheck(id_TSv_r [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_TSv_r [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
- fcheck(id_TSv_r [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
- dcheck(id_TSv_r [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
-
- rcheck(id_TSr_r [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSr_r [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSr_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSr_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- rcheck(id_TSo_r [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSo_r [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSo_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSo_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- mcheck(id_TSm_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
-
- ncheck(id_TSn_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- //######################################################################
-
- ucheck(id_TSa_o [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_TSa_o [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_TSa_o [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
- scheck(id_TSa_o [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_TSa_o [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
- icheck(id_TSa_o [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_TSa_o [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
- fcheck(id_TSa_o [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
- dcheck(id_TSa_o [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
- rcheck(id_TSa_o [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSa_o [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSa_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSa_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- ucheck(id_TSv_o [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_TSv_o [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_TSv_o [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
- scheck(id_TSv_o [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_TSv_o [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
- icheck(id_TSv_o [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_TSv_o [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
- fcheck(id_TSv_o [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
- dcheck(id_TSv_o [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
-
- rcheck(id_TSr_o [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSr_o [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSr_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSr_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- rcheck(id_TSo_o [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSo_o [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSo_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSo_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- mcheck(id_TSm_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
-
- ncheck(id_TSn_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- //######################################################################
-
- ucheck(id_Sas_Ss[Unit ](uarray));
- zcheck(id_Sas_Ss[Boolean](zarray));
- bcheck(id_Sas_Ss[Byte ](barray));
- scheck(id_Sas_Ss[Short ](sarray));
- ccheck(id_Sas_Ss[Char ](carray));
- icheck(id_Sas_Ss[Int ](iarray));
- lcheck(id_Sas_Ss[Long ](larray));
- fcheck(id_Sas_Ss[Float ](farray));
- dcheck(id_Sas_Ss[Double ](darray));
- rcheck(id_Sas_Ss[AnyRef ](rarray));
- ocheck(id_Sas_Ss[Object ](oarray));
- mcheck(id_Sas_Ss[Map ](marray));
- ncheck(id_Sas_Ss[Strings](narray));
-
- ucheck(id_Svs_Ss[Unit ](uarray));
- zcheck(id_Svs_Ss[Boolean](zarray));
- bcheck(id_Svs_Ss[Byte ](barray));
- scheck(id_Svs_Ss[Short ](sarray));
- ccheck(id_Svs_Ss[Char ](carray));
- icheck(id_Svs_Ss[Int ](iarray));
- lcheck(id_Svs_Ss[Long ](larray));
- fcheck(id_Svs_Ss[Float ](farray));
- dcheck(id_Svs_Ss[Double ](darray));
-
- rcheck(id_Srs_Ss[AnyRef ](rarray));
- ocheck(id_Srs_Ss[Object ](oarray));
- mcheck(id_Srs_Ss[Map ](marray));
- ncheck(id_Srs_Ss[Strings](narray));
-
- rcheck(id_Sos_Ss[AnyRef ](rarray));
- ocheck(id_Sos_Ss[Object ](oarray));
- mcheck(id_Sos_Ss[Map ](marray));
- ncheck(id_Sos_Ss[Strings](narray));
-
- mcheck(id_Sms_Ss[Map ](marray));
-
- ncheck(id_Sns_Ss[Strings](narray));
-
- //######################################################################
-
- ucheck(id_TSa_a [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_TSa_a [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_TSa_a [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
- scheck(id_TSa_a [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_TSa_a [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
- icheck(id_TSa_a [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_TSa_a [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
- fcheck(id_TSa_a [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
- dcheck(id_TSa_a [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
- rcheck(id_TSa_a [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSa_a [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSa_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSa_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- ucheck(id_TSv_a [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_TSv_a [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_TSv_a [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
- scheck(id_TSv_a [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_TSv_a [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
- icheck(id_TSv_a [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_TSv_a [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
- fcheck(id_TSv_a [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
- dcheck(id_TSv_a [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
-
- rcheck(id_TSr_a [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSr_a [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSr_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSr_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- rcheck(id_TSo_a [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSo_a [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSo_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSo_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- mcheck(id_TSm_a [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
-
- ncheck(id_TSn_a [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- //######################################################################
-
- ucheck(id_TSa_r [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_TSa_r [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_TSa_r [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
- scheck(id_TSa_r [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_TSa_r [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
- icheck(id_TSa_r [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_TSa_r [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
- fcheck(id_TSa_r [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
- dcheck(id_TSa_r [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
- rcheck(id_TSa_r [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSa_r [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSa_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSa_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- ucheck(id_TSv_r [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_TSv_r [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_TSv_r [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
- scheck(id_TSv_r [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_TSv_r [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
- icheck(id_TSv_r [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_TSv_r [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
- fcheck(id_TSv_r [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
- dcheck(id_TSv_r [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
-
- rcheck(id_TSr_r [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSr_r [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSr_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSr_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- rcheck(id_TSo_r [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSo_r [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSo_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSo_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- mcheck(id_TSm_r [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
-
- ncheck(id_TSn_r [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- //######################################################################
-
- ucheck(id_TSa_o [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_TSa_o [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_TSa_o [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
- scheck(id_TSa_o [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_TSa_o [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
- icheck(id_TSa_o [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_TSa_o [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
- fcheck(id_TSa_o [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
- dcheck(id_TSa_o [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
- rcheck(id_TSa_o [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSa_o [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSa_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSa_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- ucheck(id_TSv_o [Unit , Array[Unit ]](uarray).asInstanceOf[Array[Unit ]]);
- zcheck(id_TSv_o [Boolean, Array[Boolean]](zarray).asInstanceOf[Array[Boolean]]);
- bcheck(id_TSv_o [Byte , Array[Byte ]](barray).asInstanceOf[Array[Byte ]]);
- scheck(id_TSv_o [Short , Array[Short ]](sarray).asInstanceOf[Array[Short ]]);
- ccheck(id_TSv_o [Char , Array[Char ]](carray).asInstanceOf[Array[Char ]]);
- icheck(id_TSv_o [Int , Array[Int ]](iarray).asInstanceOf[Array[Int ]]);
- lcheck(id_TSv_o [Long , Array[Long ]](larray).asInstanceOf[Array[Long ]]);
- fcheck(id_TSv_o [Float , Array[Float ]](farray).asInstanceOf[Array[Float ]]);
- dcheck(id_TSv_o [Double , Array[Double ]](darray).asInstanceOf[Array[Double ]]);
-
- rcheck(id_TSr_o [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSr_o [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSr_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSr_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- rcheck(id_TSo_o [AnyRef , Array[AnyRef ]](rarray).asInstanceOf[Array[AnyRef ]]);
- ocheck(id_TSo_o [Object , Array[Object ]](oarray).asInstanceOf[Array[Object ]]);
- mcheck(id_TSo_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
- ncheck(id_TSo_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- mcheck(id_TSm_o [Map , Array[Map ]](marray).asInstanceOf[Array[Map ]]);
-
- ncheck(id_TSn_o [Strings, Array[Strings]](narray).asInstanceOf[Array[Strings]]);
-
- //######################################################################
-
- check_Ta(uarray, 2, u0, ucheck)
- check_Ta(zarray, 2, z0, zcheck)
- check_Ta(barray, 3, b0, bcheck)
- check_Ta(sarray, 3, s0, scheck)
- check_Ta(carray, 3, c0, ccheck)
- check_Ta(iarray, 3, i0, icheck)
- check_Ta(larray, 3, l0, lcheck)
- check_Ta(farray, 3, f0, fcheck)
- check_Ta(darray, 3, d0, dcheck)
- check_Ta(rarray, 6, r0, rcheck)
- check_Ta(oarray, 6, o0, ocheck)
- check_Ta(marray, 3, m0, mcheck)
- check_Ta(narray, 3, n0, ncheck)
-
- check_Tv(uarray, 2, u0, ucheck)
- check_Tv(zarray, 2, z0, zcheck)
- check_Tv(barray, 3, b0, bcheck)
- check_Tv(sarray, 3, s0, scheck)
- check_Tv(carray, 3, c0, ccheck)
- check_Tv(iarray, 3, i0, icheck)
- check_Tv(larray, 3, l0, lcheck)
- check_Tv(farray, 3, f0, fcheck)
- check_Tv(darray, 3, d0, dcheck)
-
- check_Tr(rarray, 6, r0, rcheck)
- check_Tr(oarray, 6, o0, ocheck)
- check_Tr(marray, 3, m0, mcheck)
- check_Tr(narray, 3, n0, ncheck)
-
- check_To(rarray, 6, r0, rcheck)
- check_To(oarray, 6, o0, ocheck)
- check_To(marray, 3, m0, mcheck)
- check_To(narray, 3, n0, ncheck)
-
- check_Tm(marray, 3, m0, mcheck)
-
- check_Tn(narray, 3, n0, ncheck)
-
- //######################################################################
-
- checkZip
- checkConcat
- checkT2368()
-
- //######################################################################
-
- println("checks: " + checks)
-
- //######################################################################
- }
-
- //##########################################################################
-}
-
diff --git a/test/disabled/presentation/simple-tests.check b/test/disabled/presentation/simple-tests.check
deleted file mode 100644
index 0f72cb5ab9..0000000000
--- a/test/disabled/presentation/simple-tests.check
+++ /dev/null
@@ -1,388 +0,0 @@
-reload: Tester.scala
-askTypeCompletion at Tester.scala(16,25)
-
-================================================================================
-[response] aksTypeCompletion at (16,25)
-retreived 75 members
-TypeMember(method !=,(x$1: AnyRef)Boolean,true,true,<none>)
-TypeMember(method !=,(x$1: Any)Boolean,true,true,<none>)
-TypeMember(method ==,(x$1: AnyRef)Boolean,true,true,<none>)
-TypeMember(method ==,(x$1: Any)Boolean,true,true,<none>)
-TypeMember(method >,(that: Tester.this.settings.Setting)Boolean,true,true,<none>)
-TypeMember(method >=,(that: Tester.this.settings.Setting)Boolean,true,true,<none>)
-TypeMember(method ##,()Int,true,true,<none>)
-TypeMember(method <,(that: Tester.this.settings.Setting)Boolean,true,true,<none>)
-TypeMember(method <=,(that: Tester.this.settings.Setting)Boolean,true,true,<none>)
-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,<none>)
-TypeMember(constructor Object,()java.lang.Object,true,true,<none>)
-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,<none>)
-TypeMember(variable _abbreviations,List[String],false,true,<none>)
-TypeMember(variable _helpSyntax,String,false,true,<none>)
-TypeMember(variable _postSetHook,(Tester.this.settings.verbose.type) => Unit,false,true,<none>)
-TypeMember(method abbreviations,=> List[String],true,true,<none>)
-TypeMember(method asInstanceOf,[T0]=> T0,true,true,<none>)
-TypeMember(method choices,=> List[String],true,true,<none>)
-TypeMember(method clone,()java.lang.Object,false,true,<none>)
-TypeMember(method compare,(that: Tester.this.settings.Setting)Int,true,true,<none>)
-TypeMember(method compareTo,(that: Tester.this.settings.Setting)Int,true,true,<none>)
-TypeMember(method dependencies,=> List[(Tester.this.settings.Setting, String)],true,true,<none>)
-TypeMember(variable dependency,Option[(Tester.this.settings.Setting, String)],false,true,<none>)
-TypeMember(method dependsOn,(s: Tester.this.settings.Setting,value: String)Tester.this.settings.verbose.type,true,true,<none>)
-TypeMember(value descr,String,false,false,<none>)
-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,<none>)
-TypeMember(method equals,(that: Any)Boolean,true,true,<none>)
-TypeMember(method errorAndValue,[T](msg: String,x: T)T,true,true,<none>)
-TypeMember(method finalize,()Unit,false,true,<none>)
-TypeMember(method formatted,(fmtstr: String)String,true,false,method any2stringadd)
-TypeMember(method hashCode,()Int,true,true,<none>)
-TypeMember(value helpDescription,String,false,true,<none>)
-TypeMember(method helpSyntax,=> String,true,true,<none>)
-TypeMember(method isAdvanced,=> Boolean,true,true,<none>)
-TypeMember(method isDefault,=> Boolean,true,true,<none>)
-TypeMember(method isForDebug,=> Boolean,true,true,<none>)
-TypeMember(method isInstanceOf,[T0]=> Boolean,true,true,<none>)
-TypeMember(method isInternalOnly,=> Boolean,true,true,<none>)
-TypeMember(method isPrivate,=> Boolean,true,true,<none>)
-TypeMember(method isStandard,=> Boolean,true,true,<none>)
-TypeMember(value name,String,false,false,<none>)
-TypeMember(method ne,(x$1: AnyRef)Boolean,true,true,<none>)
-TypeMember(method notify,()Unit,true,true,<none>)
-TypeMember(method notifyAll,()Unit,true,true,<none>)
-TypeMember(method postSetHook,()Unit,true,true,<none>)
-TypeMember(method respondsTo,(label: String)Boolean,true,true,<none>)
-TypeMember(value self,Any,false,false,method any2stringadd)
-TypeMember(variable setByUser,Boolean,false,true,<none>)
-TypeMember(method synchronized,[T0](x$1: T0)T0,true,true,<none>)
-TypeMember(method toString,()String,true,true,<none>)
-TypeMember(method tryToSet,(args: List[String])Some[List[String]],true,false,<none>)
-TypeMember(method tryToSetColon,(args: List[String])Option[Tester.this.settings.ResultOfTryToSet],true,true,<none>)
-TypeMember(method tryToSetFromPropertyValue,(s: String)Unit,true,false,<none>)
-TypeMember(method tryToSetProperty,(args: List[String])Option[Tester.this.settings.ResultOfTryToSet],true,true,<none>)
-TypeMember(method unparse,=> List[String],true,false,<none>)
-TypeMember(variable v,Boolean,false,false,<none>)
-TypeMember(method value,=> Tester.this.settings.verbose.T,true,true,<none>)
-TypeMember(method value_=,(arg: Tester.this.settings.verbose.T)Unit,true,true,<none>)
-TypeMember(method wait,()Unit,true,true,<none>)
-TypeMember(method wait,(x$1: Long,x$2: Int)Unit,true,true,<none>)
-TypeMember(method wait,(x$1: Long)Unit,true,true,<none>)
-TypeMember(method withAbbreviation,(s: String)Tester.this.settings.verbose.type,true,true,<none>)
-TypeMember(method withHelpSyntax,(s: String)Tester.this.settings.verbose.type,true,true,<none>)
-TypeMember(method withPostSetHook,(f: (Tester.this.settings.verbose.type) => Unit)Tester.this.settings.verbose.type,true,true,<none>)
-TypeMember(value x,Tester.this.settings.BooleanSetting,false,false,method any2ArrowAssoc)
-askTypeCompletion at Tester.scala(23,24)
-
-================================================================================
-[response] aksTypeCompletion at (23,24)
-retreived 46 members
-TypeMember(method !=,(x$1: AnyRef)Boolean,true,true,<none>)
-TypeMember(method !=,(x$1: Any)Boolean,true,true,<none>)
-TypeMember(method ==,(x$1: AnyRef)Boolean,true,true,<none>)
-TypeMember(method ==,(x$1: Any)Boolean,true,true,<none>)
-TypeMember(method ##,()Int,true,true,<none>)
-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,<none>)
-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,<none>)
-TypeMember(method cancel,()Unit,true,false,<none>)
-TypeMember(variable cancelled,Boolean,false,false,<none>)
-TypeMember(method clear,()Unit,true,false,<none>)
-TypeMember(method clone,()java.lang.Object,false,true,<none>)
-TypeMember(variable complete,Boolean,false,false,<none>)
-TypeMember(variable data,Option[Either[U,Throwable]],false,false,<none>)
-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,<none>)
-TypeMember(method equals,(x$1: Any)Boolean,true,true,<none>)
-TypeMember(method finalize,()Unit,false,true,<none>)
-TypeMember(method formatted,(fmtstr: String)String,true,false,method any2stringadd)
-TypeMember(method get,(timeout: Long)Option[Either[U,Throwable]],true,false,<none>)
-TypeMember(method get,=> Either[U,Throwable],true,false,<none>)
-TypeMember(method hashCode,()Int,true,true,<none>)
-TypeMember(method isCancelled,=> Boolean,true,false,<none>)
-TypeMember(method isComplete,=> Boolean,true,false,<none>)
-TypeMember(method isInstanceOf,[T0]=> Boolean,true,true,<none>)
-TypeMember(method ne,(x$1: AnyRef)Boolean,true,true,<none>)
-TypeMember(method notify,()Unit,true,true,<none>)
-TypeMember(method notifyAll,()Unit,true,true,<none>)
-TypeMember(method raise,(exc: Throwable)Unit,true,false,<none>)
-TypeMember(value self,Any,false,false,method any2stringadd)
-TypeMember(method set,(x: U)Unit,true,false,<none>)
-TypeMember(method setProvisionally,(x: U)Unit,true,false,<none>)
-TypeMember(method synchronized,[T0](x$1: T0)T0,true,true,<none>)
-TypeMember(method toString,()java.lang.String,true,true,<none>)
-TypeMember(method wait,()Unit,true,true,<none>)
-TypeMember(method wait,(x$1: Long,x$2: Int)Unit,true,true,<none>)
-TypeMember(method wait,(x$1: Long)Unit,true,true,<none>)
-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 !=,(x$1: AnyRef)Boolean,true,true,<none>)
-TypeMember(method !=,(x$1: Any)Boolean,true,true,<none>)
-TypeMember(method ==,(x$1: AnyRef)Boolean,true,true,<none>)
-TypeMember(method ==,(x$1: Any)Boolean,true,true,<none>)
-TypeMember(method ##,()Int,true,true,<none>)
-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,()scala.tools.nsc.Settings,true,false,<none>)
-TypeMember(constructor Settings,(errorFn: (String) => Unit)scala.tools.nsc.Settings,true,false,<none>)
-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,<none>)
-TypeMember(trait AbsSettingValue,Tester.this.settings.AbsSettingValue,true,true,<none>)
-TypeMember(class BooleanSetting,Tester.this.settings.BooleanSetting,true,true,<none>)
-TypeMember(method BooleanSetting,(name: String,descr: String)Tester.this.settings.BooleanSetting,true,true,<none>)
-TypeMember(class ChoiceSetting,Tester.this.settings.ChoiceSetting,true,true,<none>)
-TypeMember(method ChoiceSetting,(name: String,helpArg: String,descr: String,choices: List[String],default: String)Tester.this.settings.ChoiceSetting,true,true,<none>)
-TypeMember(class IntSetting,Tester.this.settings.IntSetting,true,true,<none>)
-TypeMember(method IntSetting,(name: String,descr: String,default: Int,range: Option[(Int, Int)],parser: (String) => Option[Int])Tester.this.settings.IntSetting,true,true,<none>)
-TypeMember(trait InternalSetting,Tester.this.settings.InternalSetting,true,true,<none>)
-TypeMember(class MultiStringSetting,Tester.this.settings.MultiStringSetting,true,true,<none>)
-TypeMember(method MultiStringSetting,(name: String,arg: String,descr: String)Tester.this.settings.MultiStringSetting,true,true,<none>)
-TypeMember(class OutputDirs,Tester.this.settings.OutputDirs,true,true,<none>)
-TypeMember(class OutputSetting,Tester.this.settings.OutputSetting,true,true,<none>)
-TypeMember(method OutputSetting,(outputDirs: Tester.this.settings.OutputDirs,default: String)Tester.this.settings.OutputSetting,true,true,<none>)
-TypeMember(class PathSetting,Tester.this.settings.PathSetting,true,true,<none>)
-TypeMember(method PathSetting,(name: String,descr: String,default: String)Tester.this.settings.PathSetting,true,true,<none>)
-TypeMember(class PhasesSetting,Tester.this.settings.PhasesSetting,true,true,<none>)
-TypeMember(method PhasesSetting,(name: String,descr: String)Tester.this.settings.PhasesSetting,true,true,<none>)
-TypeMember(type ResultOfTryToSet,Tester.this.settings.ResultOfTryToSet,true,true,<none>)
-TypeMember(class Setting,Tester.this.settings.Setting,true,true,<none>)
-TypeMember(class SettingGroup,Tester.this.settings.SettingGroup,true,true,<none>)
-TypeMember(lazy value SettingOrdering,Ordering[Tester.this.settings.Setting],false,true,<none>)
-TypeMember(trait SettingValue,Tester.this.settings.SettingValue,true,true,<none>)
-TypeMember(method StringSetting,(name: String,arg: String,descr: String,default: String)Tester.this.settings.StringSetting,true,true,<none>)
-TypeMember(class StringSetting,Tester.this.settings.StringSetting,true,true,<none>)
-TypeMember(method XO,=> Tester.this.settings.BooleanSetting,true,true,<none>)
-TypeMember(value Xchecknull,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Xcloselim,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Xdce,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Xexperimental,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Xhelp,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Xlinearizer,Tester.this.settings.ChoiceSetting,false,true,<none>)
-TypeMember(value XlogImplicits,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Xmigration28,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Xnojline,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Xprint,Tester.this.settings.PhasesSetting,false,true,<none>)
-TypeMember(value Xprintpos,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Xshowcls,Tester.this.settings.StringSetting,false,true,<none>)
-TypeMember(value Xshowobj,Tester.this.settings.StringSetting,false,true,<none>)
-TypeMember(value Xshowtrees,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Xwarnfatal,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Xwarninit,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Ycompacttrees,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Ycompletion,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value YdepMethTpes,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Yhelp,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Yidedebug,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Ylogcp,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value YmethodInfer,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Ymurmur,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Ynogenericsig,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Ynosqueeze,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Ynotnull,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Ypmatdebug,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Ypmatnaive,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value YpresentationDebug,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value YpresentationLog,Tester.this.settings.StringSetting,false,true,<none>)
-TypeMember(value YpresentationReplay,Tester.this.settings.StringSetting,false,true,<none>)
-TypeMember(value YpresentationVerbose,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Yprofile,Tester.this.settings.PhasesSetting,false,true,<none>)
-TypeMember(value YprofileClass,Tester.this.settings.StringSetting,false,true,<none>)
-TypeMember(value YprofileMem,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Yrangepos,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Yrecursion,Tester.this.settings.IntSetting,false,true,<none>)
-TypeMember(value Yrepldebug,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value YrichExes,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Yshow,Tester.this.settings.PhasesSetting,false,true,<none>)
-TypeMember(value Ystatistics,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Ytyperdebug,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value Yverifysigs,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value YvirtClasses,Boolean,false,true,<none>)
-TypeMember(value Ywarndeadcode,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(method add,[T <: Tester.this.settings.Setting](s: T)T,false,true,<none>)
-TypeMember(lazy value allSettings,scala.collection.mutable.HashSet[Tester.this.settings.Setting],false,true,<none>)
-TypeMember(value argfiles,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(method asInstanceOf,[T0]=> T0,true,true,<none>)
-TypeMember(value assemextdirs,Tester.this.settings.StringSetting,false,true,<none>)
-TypeMember(value assemname,Tester.this.settings.StringSetting,false,true,<none>)
-TypeMember(value assemrefs,Tester.this.settings.StringSetting,false,true,<none>)
-TypeMember(value bootclasspath,Tester.this.settings.PathSetting,false,true,<none>)
-TypeMember(value browse,Tester.this.settings.PhasesSetting,false,true,<none>)
-TypeMember(value check,Tester.this.settings.PhasesSetting,false,true,<none>)
-TypeMember(method checkDependencies,=> Boolean,true,true,<none>)
-TypeMember(value checkInit,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value classpath,Tester.this.settings.PathSetting,false,true,<none>)
-TypeMember(method clone,()java.lang.Object,false,true,<none>)
-TypeMember(method copy,()scala.tools.nsc.Settings,true,true,<none>)
-TypeMember(value d,Tester.this.settings.OutputSetting,false,true,<none>)
-TypeMember(value debug,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(method debuginfo,=> Tester.this.settings.ChoiceSetting,true,true,<none>)
-TypeMember(method dependenciesFile,=> Tester.this.settings.StringSetting,true,true,<none>)
-TypeMember(value dependencyfile,Tester.this.settings.StringSetting,false,true,<none>)
-TypeMember(value deprecation,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(method disable,(s: Tester.this.settings.Setting)scala.collection.mutable.HashSet[Tester.this.settings.Setting],true,true,<none>)
-TypeMember(value disable,Tester.this.settings.MultiStringSetting,false,true,<none>)
-TypeMember(value elidebelow,Tester.this.settings.IntSetting,false,true,<none>)
-TypeMember(method embeddedDefaults,(loader: java.lang.ClassLoader)Unit,true,true,<none>)
-TypeMember(method embeddedDefaults,[T](implicit evidence$1: ClassTag[T])Unit,true,true,<none>)
-TypeMember(value encoding,Tester.this.settings.StringSetting,false,true,<none>)
-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,<none>)
-TypeMember(method equals,(that: Any)Boolean,true,true,<none>)
-TypeMember(value errorFn,(String) => Unit,false,false,<none>)
-TypeMember(value explaintypes,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(variable explicitParentLoader,Option[java.lang.ClassLoader],false,true,<none>)
-TypeMember(value extdirs,Tester.this.settings.PathSetting,false,true,<none>)
-TypeMember(method finalize,()Unit,false,true,<none>)
-TypeMember(method formatted,(fmtstr: String)String,true,false,method any2stringadd)
-TypeMember(value fscShutdown,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value future,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value g,Tester.this.settings.ChoiceSetting,false,true,<none>)
-TypeMember(value genPhaseGraph,Tester.this.settings.StringSetting,false,true,<none>)
-TypeMember(method getClasspath,(id: String,loader: java.lang.ClassLoader)Option[String],false,true,<none>)
-TypeMember(method hashCode,()Int,true,true,<none>)
-TypeMember(value help,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value inline,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(method isInstanceOf,[T0]=> Boolean,true,true,<none>)
-TypeMember(value javabootclasspath,Tester.this.settings.PathSetting,false,true,<none>)
-TypeMember(value javaextdirs,Tester.this.settings.PathSetting,false,true,<none>)
-TypeMember(value log,Tester.this.settings.PhasesSetting,false,true,<none>)
-TypeMember(method lookupSetting,(cmd: String)Option[Tester.this.settings.Setting],true,true,<none>)
-TypeMember(value make,Tester.this.settings.ChoiceSetting,false,true,<none>)
-TypeMember(method ne,(x$1: AnyRef)Boolean,true,true,<none>)
-TypeMember(value noCompletion,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value noForwarders,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value noSelfCheck,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value noassertions,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value noimports,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value nospecialization,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(method notify,()Unit,true,true,<none>)
-TypeMember(method notifyAll,()Unit,true,true,<none>)
-TypeMember(value nouescape,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value nowarn,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(method nowarnings,=> Tester.this.settings.BooleanSetting,true,true,<none>)
-TypeMember(value optimise,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(method outdir,=> Tester.this.settings.OutputSetting,true,true,<none>)
-TypeMember(lazy value outputDirs,Tester.this.settings.OutputDirs,false,true,<none>)
-TypeMember(method parseParams,(args: List[String])List[String],false,true,<none>)
-TypeMember(value plugin,Tester.this.settings.MultiStringSetting,false,true,<none>)
-TypeMember(value pluginOptions,Tester.this.settings.MultiStringSetting,false,true,<none>)
-TypeMember(value pluginsDir,Tester.this.settings.StringSetting,false,true,<none>)
-TypeMember(value print,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(method printLate,=> Tester.this.settings.BooleanSetting,true,true,<none>)
-TypeMember(value printtypes,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(method processArgumentString,(params: String)(Boolean, List[String]),true,true,<none>)
-TypeMember(method processArguments,(arguments: List[String],processAll: Boolean)(Boolean, List[String]),true,true,<none>)
-TypeMember(value prompt,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(method recreateArgs,=> List[String],true,true,<none>)
-TypeMember(value refinementMethodDispatch,Tester.this.settings.ChoiceSetting,false,true,<none>)
-TypeMember(value require,Tester.this.settings.MultiStringSetting,false,true,<none>)
-TypeMember(value resident,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value script,Tester.this.settings.StringSetting,false,true,<none>)
-TypeMember(value self,Any,false,false,method any2stringadd)
-TypeMember(value selfInAnnots,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value showPhases,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value showPlugins,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value skip,Tester.this.settings.PhasesSetting,false,true,<none>)
-TypeMember(value sourceReader,Tester.this.settings.StringSetting,false,true,<none>)
-TypeMember(value sourcedir,Tester.this.settings.StringSetting,false,true,<none>)
-TypeMember(value sourcepath,Tester.this.settings.PathSetting,false,true,<none>)
-TypeMember(method splitParams,(line: String)List[String],true,true,<none>)
-TypeMember(value stop,Tester.this.settings.PhasesSetting,false,true,<none>)
-TypeMember(method synchronized,[T0](x$1: T0)T0,true,true,<none>)
-TypeMember(value target,Tester.this.settings.ChoiceSetting,false,true,<none>)
-TypeMember(method toConciseString,=> String,true,true,<none>)
-TypeMember(method toString,()String,true,true,<none>)
-TypeMember(value unchecked,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value uniqid,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value usejavacp,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(method userSetSettings,=> scala.collection.Set[Tester.this.settings.Setting],true,true,<none>)
-TypeMember(value verbose,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value version,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(method visibleSettings,=> scala.collection.Set[Tester.this.settings.Setting],true,true,<none>)
-TypeMember(method wait,()Unit,true,true,<none>)
-TypeMember(method wait,(x$1: Long,x$2: Int)Unit,true,true,<none>)
-TypeMember(method wait,(x$1: Long)Unit,true,true,<none>)
-TypeMember(value writeICode,Tester.this.settings.BooleanSetting,false,true,<none>)
-TypeMember(value x,scala.tools.nsc.Settings,false,false,method any2ArrowAssoc)
-askTypeCompletion at Tester.scala(105,29)
-
-================================================================================
-[response] aksTypeCompletion at (105,29)
-retreived 50 members
-TypeMember(method !=,(x$1: AnyRef)Boolean,true,true,<none>)
-TypeMember(method !=,(x$1: Any)Boolean,true,true,<none>)
-TypeMember(method ==,(x$1: AnyRef)Boolean,true,true,<none>)
-TypeMember(method ==,(x$1: Any)Boolean,true,true,<none>)
-TypeMember(method ##,()Int,true,true,<none>)
-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,<none>)
-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,<none>)
-TypeMember(method beginsWith,(offset: Int,text: String)Boolean,true,false,<none>)
-TypeMember(method clone,()java.lang.Object,false,true,<none>)
-TypeMember(method content,=> Array[Char],true,false,<none>)
-TypeMember(method dbg,(offset: Int)java.lang.String,true,false,<none>)
-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,<none>)
-TypeMember(method equals,(x$1: Any)Boolean,true,true,<none>)
-TypeMember(method file,=> scala.tools.nsc.io.AbstractFile,true,false,<none>)
-TypeMember(method finalize,()Unit,false,true,<none>)
-TypeMember(method formatted,(fmtstr: String)String,true,false,method any2stringadd)
-TypeMember(method hashCode,()Int,true,true,<none>)
-TypeMember(method identifier,(pos: scala.tools.nsc.util.Position,compiler: scala.tools.nsc.Global)Option[String],true,false,<none>)
-TypeMember(method isInstanceOf,[T0]=> Boolean,true,true,<none>)
-TypeMember(method isLineBreak,(idx: Int)Boolean,true,false,<none>)
-TypeMember(method isSelfContained,=> Boolean,true,false,<none>)
-TypeMember(method length,=> Int,true,false,<none>)
-TypeMember(method lineToOffset,(index: Int)Int,true,false,<none>)
-TypeMember(method lineToString,(index: Int)String,true,false,<none>)
-TypeMember(method ne,(x$1: AnyRef)Boolean,true,true,<none>)
-TypeMember(method notify,()Unit,true,true,<none>)
-TypeMember(method notifyAll,()Unit,true,true,<none>)
-TypeMember(method offsetToLine,(offset: Int)Int,true,false,<none>)
-TypeMember(method path,=> String,true,false,<none>)
-TypeMember(method position,(line: Int,column: Int)scala.tools.nsc.util.Position,true,false,<none>)
-TypeMember(method position,(offset: Int)scala.tools.nsc.util.Position,true,false,<none>)
-TypeMember(method positionInUltimateSource,(position: scala.tools.nsc.util.Position)scala.tools.nsc.util.Position,true,false,<none>)
-TypeMember(value self,Any,false,false,method any2stringadd)
-TypeMember(method skipWhitespace,(offset: Int)Int,true,false,<none>)
-TypeMember(method synchronized,[T0](x$1: T0)T0,true,true,<none>)
-TypeMember(method toString,()String,true,false,<none>)
-TypeMember(method wait,()Unit,true,true,<none>)
-TypeMember(method wait,(x$1: Long,x$2: Int)Unit,true,true,<none>)
-TypeMember(method wait,(x$1: Long)Unit,true,true,<none>)
-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/disabled/presentation/simple-tests.javaopts b/test/disabled/presentation/simple-tests.javaopts
deleted file mode 100644
index 4af888f9c2..0000000000
--- a/test/disabled/presentation/simple-tests.javaopts
+++ /dev/null
@@ -1 +0,0 @@
--Dfile.encoding=UTF-8 \ No newline at end of file
diff --git a/test/disabled/presentation/simple-tests.opts b/test/disabled/presentation/simple-tests.opts
deleted file mode 100644
index d651316984..0000000000
--- a/test/disabled/presentation/simple-tests.opts
+++ /dev/null
@@ -1,18 +0,0 @@
-# This file contains command line options that are passed to the presentation compiler
-# Lines starting with # are stripped, and you can split arguments on several lines.
-
-# The -bootclasspath option is treated specially by the test framework: if it's not specified
-# in this file, the presentation compiler will pick up the scala-library/compiler that's on the
-# java classpath used to run this test (usually build/pack)
-
-# Any option can be passed this way, like presentation debug
-# -Ypresentation-debug
-
-# the classpath is relative to the current working directory. That means it depends where you're
-# running partest from. Run it from the root scala checkout for these files to resolve correctly
-# (by default when running 'ant test', or 'test/partest'). Paths use Unix separators, the test
-# framework translates them to the platform dependent representation.
--bootclasspath lib/scala-compiler.jar:lib/scala-library.jar
-
-# the following line would test using the quick compiler
-# -bootclasspath build/quick/classes/compiler:build/quick/classes/library
diff --git a/test/disabled/presentation/simple-tests/SimpleInteractiveTest.scala b/test/disabled/presentation/simple-tests/SimpleInteractiveTest.scala
deleted file mode 100644
index 014fd24b6f..0000000000
--- a/test/disabled/presentation/simple-tests/SimpleInteractiveTest.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-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/disabled/presentation/simple-tests/src/Tester.scala b/test/disabled/presentation/simple-tests/src/Tester.scala
deleted file mode 100644
index b039470ae7..0000000000
--- a/test/disabled/presentation/simple-tests/src/Tester.scala
+++ /dev/null
@@ -1,204 +0,0 @@
-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 <n> <files>
- *
- * where <n> is the number os tests to be run and <files> 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)
- }
-}
diff --git a/test/disabled/presentation/timeofday.check b/test/disabled/presentation/timeofday.check
deleted file mode 100644
index 2a09d0bcfc..0000000000
--- a/test/disabled/presentation/timeofday.check
+++ /dev/null
@@ -1,100 +0,0 @@
-reload: timeofday.scala
-
-askTypeCompletion at timeofday.scala(26,33)
-================================================================================
-[response] aksTypeCompletion at (26,33)
-retrieved 45 members
-`method !=(x$1: Any)Boolean`
-`method !=(x$1: AnyRef)Boolean`
-`method ##()Int`
-`method +(other: String)String`
-`method ->[B](y: B)(timeofday.TimeOfDayVar, B)`
-`method ==(x$1: Any)Boolean`
-`method ==(x$1: AnyRef)Boolean`
-`method asInstanceOf[T0]=> T0`
-`method clone()Object`
-`method ensuring(cond: Boolean)timeofday.TimeOfDayVar`
-`method ensuring(cond: Boolean, msg: => Any)timeofday.TimeOfDayVar`
-`method ensuring(cond: timeofday.TimeOfDayVar => Boolean)timeofday.TimeOfDayVar`
-`method ensuring(cond: timeofday.TimeOfDayVar => Boolean, msg: => Any)timeofday.TimeOfDayVar`
-`method eq(x$1: AnyRef)Boolean`
-`method equals(x$1: Any)Boolean`
-`method finalize()Unit`
-`method formatted(fmtstr: String)String`
-`method hashCode()Int`
-`method hours=> Int`
-`method hours_=(h: Int)Unit`
-`method isInstanceOf[T0]=> Boolean`
-`method minutes=> Int`
-`method minutes_=(m: Int)Unit`
-`method ne(x$1: AnyRef)Boolean`
-`method notify()Unit`
-`method notifyAll()Unit`
-`method seconds=> Int`
-`method seconds_=(s: Int)Unit`
-`method synchronized[T0](x$1: T0)T0`
-`method toString()String`
-`method wait()Unit`
-`method wait(x$1: Long)Unit`
-`method wait(x$1: Long, x$2: Int)Unit`
-`method x=> timeofday.TimeOfDayVar`
-`method →[B](y: B)(timeofday.TimeOfDayVar, B)`
-`value __leftOfArrowtimeofday.TimeOfDayVar`
-`value __resultOfEnsuringtimeofday.TimeOfDayVar`
-`value selfAny`
-`variable hInt`
-`variable mInt`
-`variable sInt`
-================================================================================
-
-askTypeCompletion at timeofday.scala(32,19)
-================================================================================
-[response] aksTypeCompletion at (32,19)
-retrieved 45 members
-`method !=(x$1: Any)Boolean`
-`method !=(x$1: AnyRef)Boolean`
-`method ##()Int`
-`method +(other: String)String`
-`method ->[B](y: B)(timeofday.TimeOfDayVar, B)`
-`method ==(x$1: Any)Boolean`
-`method ==(x$1: AnyRef)Boolean`
-`method asInstanceOf[T0]=> T0`
-`method clone()Object`
-`method ensuring(cond: Boolean)timeofday.TimeOfDayVar`
-`method ensuring(cond: Boolean, msg: => Any)timeofday.TimeOfDayVar`
-`method ensuring(cond: timeofday.TimeOfDayVar => Boolean)timeofday.TimeOfDayVar`
-`method ensuring(cond: timeofday.TimeOfDayVar => Boolean, msg: => Any)timeofday.TimeOfDayVar`
-`method eq(x$1: AnyRef)Boolean`
-`method equals(x$1: Any)Boolean`
-`method finalize()Unit`
-`method formatted(fmtstr: String)String`
-`method hashCode()Int`
-`method hours=> Int`
-`method hours_=(h: Int)Unit`
-`method isInstanceOf[T0]=> Boolean`
-`method minutes=> Int`
-`method minutes_=(m: Int)Unit`
-`method ne(x$1: AnyRef)Boolean`
-`method notify()Unit`
-`method notifyAll()Unit`
-`method seconds=> Int`
-`method seconds_=(s: Int)Unit`
-`method synchronized[T0](x$1: T0)T0`
-`method toString()String`
-`method wait()Unit`
-`method wait(x$1: Long)Unit`
-`method wait(x$1: Long, x$2: Int)Unit`
-`method x=> timeofday.TimeOfDayVar`
-`method →[B](y: B)(timeofday.TimeOfDayVar, B)`
-`value __leftOfArrowtimeofday.TimeOfDayVar`
-`value __resultOfEnsuringtimeofday.TimeOfDayVar`
-`value selfAny`
-`variable hInt`
-`variable mInt`
-`variable sInt`
-================================================================================
-
-askHyperlinkPos for `hours` at (33,11) timeofday.scala
-================================================================================
-[response] found askHyperlinkPos for `hours` at (10,9) timeofday.scala
-================================================================================
diff --git a/test/disabled/presentation/timeofday/Runner.scala b/test/disabled/presentation/timeofday/Runner.scala
deleted file mode 100644
index 1c03e3d5ba..0000000000
--- a/test/disabled/presentation/timeofday/Runner.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-import scala.tools.nsc.interactive.tests._
-
-object Test extends InteractiveTest
diff --git a/test/disabled/presentation/timeofday/src/timeofday.scala b/test/disabled/presentation/timeofday/src/timeofday.scala
deleted file mode 100644
index c8dc7cf820..0000000000
--- a/test/disabled/presentation/timeofday/src/timeofday.scala
+++ /dev/null
@@ -1,35 +0,0 @@
-object timeofday {
- class DateError extends Exception
-
- /** Simulating properties in Scala
- * (example 4.2.1 in the Scala Language Specification)
- */
- class TimeOfDayVar {
- private var h, m, s: Int = 0
-
- def hours = h
-
- /** A method 'ident_=' is a setter for 'ident'. 'code.ident = ...' will
- * be translated to a call to 'ident_='
- */
- def hours_= (h: Int) =
- if (0 <= h && h < 24) this.h = h
- else throw new DateError()
-
- def minutes = m
- def minutes_= (m: Int) =
- if (0 <= m && m < 60) this.m = m
- else throw new DateError()
-
- def seconds = s
- def seconds_= (s: Int) =
- if (0 <= s && s < 60) this./*!*/s = s
- else throw new DateError()
- }
-
- def main(args: Array[String]) {
- val d = new TimeOfDayVar
- d.hours = 8; d./*!*/minutes = 30; d.seconds = 0
- d.hours/*#*/ = 25 // throws a DateError exception
- }
-}
diff --git a/test/disabled/properties.check b/test/disabled/properties.check
deleted file mode 100644
index a721d49e3a..0000000000
--- a/test/disabled/properties.check
+++ /dev/null
@@ -1,158 +0,0 @@
-reload: properties.scala
-
-askTypeCompletion at properties.scala(29,33)
-================================================================================
-[response] aksTypeCompletion at (29,33)
-retrieved 50 members
-`method !=(x$1: Any)Boolean`
-`method !=(x$1: AnyRef)Boolean`
-`method ##()Int`
-`method +(other: String)String`
-`method ->[B](y: B)(properties.Property[String], B)`
-`method ==(x$1: Any)Boolean`
-`method ==(x$1: AnyRef)Boolean`
-`method apply()String`
-`method asInstanceOf[T0]=> T0`
-`method canEqual(that: Any)Boolean`
-`method clone()Object`
-`method ensuring(cond: Boolean)properties.Property[String]`
-`method ensuring(cond: Boolean, msg: => Any)properties.Property[String]`
-`method ensuring(cond: properties.Property[String] => Boolean)properties.Property[String]`
-`method ensuring(cond: properties.Property[String] => Boolean, msg: => Any)properties.Property[String]`
-`method eq(x$1: AnyRef)Boolean`
-`method equals(x$1: Any)Boolean`
-`method finalize()Unit`
-`method formatted(fmtstr: String)String`
-`method get(newGetter: String => String)properties.Property[String]`
-`method hashCode()Int`
-`method isInstanceOf[T0]=> Boolean`
-`method ne(x$1: AnyRef)Boolean`
-`method notify()Unit`
-`method notifyAll()Unit`
-`method productArity=> Int`
-`method productElement(n: Int)Any`
-`method productIterator=> Iterator[Any]`
-`method productPrefix=> String`
-`method set(newSetter: String => String)properties.Property[String]`
-`method synchronized[T0](x$1: T0)T0`
-`method toString()String`
-`method update(newValue: String)Unit`
-`method wait()Unit`
-`method wait(x$1: Long)Unit`
-`method wait(x$1: Long, x$2: Int)Unit`
-`method x=> properties.Property[String]`
-`method →[B](y: B)(properties.Property[String], B)`
-`value __leftOfArrowproperties.Property[String]`
-`value __resultOfEnsuringproperties.Property[String]`
-`value initString`
-`value selfAny`
-`variable getterString => String`
-`variable setterString => String`
-`variable valueString`
-================================================================================
-
-askTypeCompletion at properties.scala(29,67)
-================================================================================
-[response] aksTypeCompletion at (29,67)
-retrieved 50 members
-`method !=(x$1: Any)Boolean`
-`method !=(x$1: AnyRef)Boolean`
-`method ##()Int`
-`method +(other: String)String`
-`method ->[B](y: B)(properties.Property[String], B)`
-`method ==(x$1: Any)Boolean`
-`method ==(x$1: AnyRef)Boolean`
-`method apply()String`
-`method asInstanceOf[T0]=> T0`
-`method canEqual(that: Any)Boolean`
-`method clone()Object`
-`method ensuring(cond: Boolean)properties.Property[String]`
-`method ensuring(cond: Boolean, msg: => Any)properties.Property[String]`
-`method ensuring(cond: properties.Property[String] => Boolean)properties.Property[String]`
-`method ensuring(cond: properties.Property[String] => Boolean, msg: => Any)properties.Property[String]`
-`method eq(x$1: AnyRef)Boolean`
-`method equals(x$1: Any)Boolean`
-`method finalize()Unit`
-`method formatted(fmtstr: String)String`
-`method get(newGetter: String => String)properties.Property[String]`
-`method hashCode()Int`
-`method isInstanceOf[T0]=> Boolean`
-`method ne(x$1: AnyRef)Boolean`
-`method notify()Unit`
-`method notifyAll()Unit`
-`method productArity=> Int`
-`method productElement(n: Int)Any`
-`method productIterator=> Iterator[Any]`
-`method productPrefix=> String`
-`method set(newSetter: String => String)properties.Property[String]`
-`method synchronized[T0](x$1: T0)T0`
-`method toString()String`
-`method update(newValue: String)Unit`
-`method wait()Unit`
-`method wait(x$1: Long)Unit`
-`method wait(x$1: Long, x$2: Int)Unit`
-`method x=> properties.Property[String]`
-`method →[B](y: B)(properties.Property[String], B)`
-`value __leftOfArrowproperties.Property[String]`
-`value __resultOfEnsuringproperties.Property[String]`
-`value initString`
-`value selfAny`
-`variable getterString => String`
-`variable setterString => String`
-`variable valueString`
-================================================================================
-
-askTypeCompletion at properties.scala(45,10)
-================================================================================
-[response] aksTypeCompletion at (45,10)
-retrieved 38 members
-`method !=(x$1: Any)Boolean`
-`method !=(x$1: AnyRef)Boolean`
-`method ##()Int`
-`method +(other: String)String`
-`method ->[B](y: B)(properties.User, B)`
-`method ==(x$1: Any)Boolean`
-`method ==(x$1: AnyRef)Boolean`
-`method asInstanceOf[T0]=> T0`
-`method clone()Object`
-`method ensuring(cond: Boolean)properties.User`
-`method ensuring(cond: Boolean, msg: => Any)properties.User`
-`method ensuring(cond: properties.User => Boolean)properties.User`
-`method ensuring(cond: properties.User => Boolean, msg: => Any)properties.User`
-`method eq(x$1: AnyRef)Boolean`
-`method equals(x$1: Any)Boolean`
-`method finalize()Unit`
-`method formatted(fmtstr: String)String`
-`method hashCode()Int`
-`method isInstanceOf[T0]=> Boolean`
-`method ne(x$1: AnyRef)Boolean`
-`method notify()Unit`
-`method notifyAll()Unit`
-`method synchronized[T0](x$1: T0)T0`
-`method toString()String`
-`method wait()Unit`
-`method wait(x$1: Long)Unit`
-`method wait(x$1: Long, x$2: Int)Unit`
-`method x=> properties.User`
-`method →[B](y: B)(properties.User, B)`
-`value __leftOfArrowproperties.User`
-`value __resultOfEnsuringproperties.User`
-`value firstnameproperties.Property[String]`
-`value lastnameproperties.Property[String]`
-`value selfAny`
-================================================================================
-
-askType at properties.scala(18,28)
-================================================================================
-[response] askTypeAt at (18,28)
-def update(newValue: T): Unit = Property.this.value_=(Property.this.setter.apply(newValue))
-================================================================================
-
-askType at properties.scala(21,31)
-================================================================================
-[response] askTypeAt at (21,31)
-def get(newGetter: T => T): properties.Property[T] = {
- Property.this.getter_=(newGetter);
- this
-}
-================================================================================
diff --git a/test/disabled/properties/Runner.scala b/test/disabled/properties/Runner.scala
deleted file mode 100644
index 1ef3cf9025..0000000000
--- a/test/disabled/properties/Runner.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-import scala.tools.nsc.interactive.tests._
-
-object Test extends InteractiveTest \ No newline at end of file
diff --git a/test/disabled/properties/src/properties.scala b/test/disabled/properties/src/properties.scala
deleted file mode 100644
index 35b6a92221..0000000000
--- a/test/disabled/properties/src/properties.scala
+++ /dev/null
@@ -1,54 +0,0 @@
-/** Illustrate the use of custom 'apply/update' methods. */
-object properties {
-
- /** A mutable property whose getter and setter may be customized. */
- case class Property[T](init: T) {
- private var value: T = init
-
- /** The getter function, defaults to identity. */
- private var setter: T => T = identity[T]
-
- /** The setter function, defaults to identity. */
- private var getter: T => T = identity[T]
-
- /** Retrive the value held in this property. */
- def apply(): T = getter(value)
-
- /** Update the value held in this property, through the setter. */
- def update(newValue: T) /*?*/ = value = setter(newValue)
-
- /** Change the getter. */
- def get(newGetter: T => T) /*?*/ = { getter = newGetter; this }
-
- /** Change the setter */
- def set(newSetter: T => T) = { setter = newSetter; this }
- }
-
- class User {
- // Create a property with custom getter and setter
- val firstname = Property("")./*!*/get { v => v.toUpperCase() }./*!*/set { v => "Mr. " + v }
- val lastname = Property("<noname>")
-
- /** Scala provides syntactic sugar for calling 'apply'. Simply
- * adding a list of arguments between parenthesis (in this case,
- * an empty list) is translated to a call to 'apply' with those
- * arguments.
- */
- override def toString() = firstname() + " " + lastname()
- }
-
- def main(args: Array[String]) {
- val user1 = new User
-
- // Syntactic sugar for 'update': an assignment is translated to a
- // call to method 'update'
- user1./*!*/firstname() = "Robert"
-
- val user2 = new User
- user2.firstname() = "bob"
- user2.lastname() = "KUZ"
-
- println("user1: " + user1)
- println("user2: " + user2)
- }
-} \ No newline at end of file
diff --git a/test/disabled/run/applet-prop.scala b/test/disabled/run/applet-prop.scala
deleted file mode 100644
index 7a98c25cab..0000000000
--- a/test/disabled/run/applet-prop.scala
+++ /dev/null
@@ -1,40 +0,0 @@
-import scala.tools.partest._
-import java.util.PropertyPermission
-import java.security.AccessControlException
-
-class S extends javax.swing.JApplet {
- scala.collection.Traversable
-}
-
-object Test extends SecurityTest {
- val s = new S
- // lazy val TestKey = sys.SystemProperties.noTraceSuppression.key
- // def hitPerm() = new Throwable with scala.util.control.ControlThrowable { }
- //
- // var throwing = false
- // override def propertyCheck(p: PropertyPermission): Unit = {
- // if (p.getName == TestKey) {
- // println("I see " + p.getName)
- // if (throwing)
- // throwIt(p)
- // }
- // }
- //
- // hitPerm()
- // securityOn()
- // hitPerm()
- //
- // throwing = true
- //
- // val caught =
- // try { hitPerm() ; false }
- // catch { case _: AccessControlException => true }
- //
- // assert(caught, "Should have incurred exception.")
- // throwing = false
- // hitPerm()
- //
- // val xs = new Traversable[Int] { def foreach[U](f: Int => U) = 1 to 3 foreach f }
- // xs foreach println
-}
-
diff --git a/test/disabled/run/coder2/Coder2.scala b/test/disabled/run/coder2/Coder2.scala
deleted file mode 100644
index c1ec70b842..0000000000
--- a/test/disabled/run/coder2/Coder2.scala
+++ /dev/null
@@ -1,212 +0,0 @@
-
-
-import collection.immutable._
-import collection.parallel._//immutable._
-
-
-class SeqCoder(words: List[String]) {
-
- private val m = Map(
- '2' -> "ABC", '3' -> "DEF", '4' -> "GHI", '5' -> "JKL",
- '6' -> "MNO", '7' -> "PQRS", '8' -> "TUV", '9' -> "WXYZ")
-
- /** Invert the mnemonics map to give a map from chars 'A' ... 'Z' to '2' ... '9' */
- private val charCode: Map[Char, Char] =
- for ((digit, letters) <- m; letter <- letters) yield letter -> digit
-
- /** Maps a word to the digit string it represents,
- * e.g. `Java` -> `5282` */
- private def wordCode(word: String): String = word.toUpperCase map charCode
-
- /** A map from digit strings to the words that represent
- * them e.g. `5282` -> List(`Java`, `Kata`, `Lava`, ...)
- */
- val wordsForNum: Map[String, Seq[String]] =
- (words groupBy wordCode).map(t => (t._1, t._2.toSeq)) withDefaultValue Seq()
-
- val memo = collection.mutable.Map[String, Set[Seq[String]]]("" -> Set(Seq()))
- val wfnmemo = collection.mutable.Map[(String, String), Set[Seq[String]]]()
- val subsmemo = collection.mutable.Map[(String, String, String), Set[Seq[String]]]()
-
- /** All ways to encode a number as a list of words */
- def encode(number: String): Set[Seq[String]] =
- if (number.isEmpty) Set(Seq())
- else {
- val splits = (1 to number.length).toSet
- // for {
- // split <- splits
- // word <- wordsForNum(number take split)
- // rest <- encode(number drop split)
- // } yield word :: rest
- val r = splits.flatMap(split => {
- val wfn = wordsForNum(number take split).flatMap(word => {
- val subs = encode(number drop split)
- val subsmapped = subs.map(rest => word +: rest)
- subsmemo += (number, number drop split, word) -> subsmapped
- subsmapped
- })
- wfnmemo += (number, number take split) -> wfn.toSet
- wfn
- })
- memo += number -> r
- r
- }
-
- /** Maps a number to a list of all word phrases that can
- * represent it */
- def translate(number: String): Set[String] = encode(number) map (_ mkString " ")
-
- def ??? : Nothing = throw new UnsupportedOperationException
-}
-
-class ParCoder(words: List[String]) {
-
- private val m = Map(
- '2' -> "ABC", '3' -> "DEF", '4' -> "GHI", '5' -> "JKL",
- '6' -> "MNO", '7' -> "PQRS", '8' -> "TUV", '9' -> "WXYZ")
-
- /** Invert the mnemnonics map to give a map from chars 'A' ... 'Z' to '2' ... '9' */
- private val charCode: Map[Char, Char] =
- for ((digit, letters) <- m; letter <- letters) yield letter -> digit
-
- /** Maps a word to the digit string it represents,
- * e.g. `Java` -> `5282` */
- private def wordCode(word: String): String = word.toUpperCase map charCode
-
- /** A map from digit strings to the words that represent
- * them e.g. `5282` -> List(`Java`, `Kata`, `Lava`, ...)
- */
- val wordsForNum: Map[String, ParSeq[String]] =
- (words groupBy wordCode).map(t => (t._1, t._2.toSeq.par)) withDefaultValue ParSeq()
-
- val comparison = new SeqCoder(words)
-
- /** All ways to encode a number as a list of words */
- def encode(number: String): ParSet[ParSeq[String]] =
- if (number.isEmpty) ParSet(ParSeq())
- else {
- val splits = (1 to number.length).toSet.par
- // for {
- // split <- splits
- // word <- wordsForNum(number take split)
- // rest <- encode(number drop split)
- // } yield word :: rest
- val r = splits.flatMap(split => {
- val wfn = wordsForNum(number take split).flatMap(word => {
- val subs = encode(number drop split)
- assertNumber(number drop split, subs)
- val subsmapped = subs.map(rest => word +: rest)
- assertSubs(number, number drop split, word, subsmapped)
- subsmapped
- })
- assertWfn(number, number take split, number drop split, wfn)
- wfn
- })
- assertNumber(number, r)
- r
- }
-
- def assertSubs(num: String, subsfrom: String, word: String, r: ParSet[ParSeq[String]]) {
- val m = comparison.subsmemo((num, subsfrom, word))
- if (r != m) {
- println("map for number from subs and word: " + num + ", " + subsfrom + ", " + word)
- println("parset: " + r.size)
- println("memoed: " + m.size)
- error("r != m")
- }
- }
-
- def assertWfn(num: String, split: String, dropped: String, r: ParSeq[ParSeq[String]]) {
- val m = comparison.wfnmemo((num, split))
- val rs = r.toSet.par
- val words: ParSeq[String] = wordsForNum(split)
- if (rs != m) {
- println("flatmap for number with split: " + num + ", " + split)
- println("words for: " + words)
- println("parset: " + rs.size)
- println("memoed: " + m.size)
- println("retrying...")
- for (i <- 0 until 30) {
- val r2: ParSeq[ParSeq[String]] = words.flatMap(word => {
- val subs: ParSet[ParSeq[String]] = encode(dropped)
- println("subs size for '" + dropped + "': " + subs.size)
- val subsmapped: ParSet[ParSeq[String]] = subs.map(rest => word +: rest)
- println("map size: " + subsmapped.size)
- subsmapped.toList
- })
- println(i + ") retry size: " + r2.size)
- }
- error("rs != m")
- }
- }
-
- def assertNumber(num: String, r: ParSet[ParSeq[String]]) {
- val m = comparison.memo(num)
- if (r != m) {
- println("for number: " + num)
- println("parset: " + r.size)
- println("memoed: " + m.size)
- error("r != m")
- }
- }
-
- /** Maps a number to a list of all word phrases that can
- * represent it */
- def translate(number: String): ParSet[String] = {
- comparison.translate(number)
- encode(number) map (_.seq mkString " ")
- }
-
- def ??? : Nothing = throw new UnsupportedOperationException
-}
-
-
-/** Test code */
-object Test {
- val code = "2328437472947"//36262633"//837976"//"6477323986225453446"
- //val code = "747294736262633"
-
- /* */
- def main(args : Array[String]) {
- for (i <- 0 until 10) {
- val seqcoder = new SeqCoder(Dictionary.wordlist)
- val sts = seqcoder.translate(code)
- //println("Translation check: " + st.size)
-
- val parcoder = new ParCoder(Dictionary.wordlist)
- val pts = parcoder.translate(code)
- //println("Translation check: " + pt.size)
-
- val st = sts.toList.sorted
- val pt = pts.toList.sorted
- if (st.size != pt.size) {
- val zipped = st.zip(pt)
- val ind = zipped.indexWhere { case (a, b) => a != b }
- val sliced = zipped.slice(ind - 10, ind + 10)
- //println(sliced.map(t => t._1 + "\n" + t._2 + "\n--------").mkString("\n"))
- //println(i + ") seq vs par: " + st.size + " vs " + pt.size)
- }
- if (st != pt) {
- val zipped = (st.toList.sorted zip pt.toList.sorted);
- val diffp = zipped indexWhere { case (x, y) => x != y }
- //println(zipped/*.slice(diffp - 10, diffp + 10)*/ mkString ("\n"))
- //println((st.toList.sorted zip pt.toList.sorted) map { case (x, y) => (x == y) } reduceLeft(_ && _))
- }
- assert(st == pt)
- }
- }
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/test/disabled/run/coder2/Dictionary.scala b/test/disabled/run/coder2/Dictionary.scala
deleted file mode 100644
index 7b354b9aa8..0000000000
--- a/test/disabled/run/coder2/Dictionary.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-object Dictionary {
- val wordlist = wordlines.split(System.getProperty("line.separator")).filter(_.trim != "").toList
- val wordarray = wordlist.toArray
- def wordlines = scala.io.Source.fromFile("test/files/run/coder/dict.txt").mkString
-}
diff --git a/test/disabled/run/docgenerator.check b/test/disabled/run/docgenerator.check
deleted file mode 100644
index dbb7eeed28..0000000000
--- a/test/disabled/run/docgenerator.check
+++ /dev/null
@@ -1,177 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
- <head><title>List of all classes and objects</title>
- <meta http-equiv="content-type" content="text/html; charset=UTF8"></meta><meta content="scaladoc" name="generator"></meta><link href="style.css" type="text/css" rel="stylesheet"></link><script type="text/javascript" src="script.js"></script>
- </head>
- <body onload="init()"><div><div class="kinds" id="Classes">Classes</div><ul class="list">
- <li id="Classes_C"><a href="examples/C0.html" target="contentFrame">C0</a></li>
-<li><a href="examples/C0.C1_Protected.html" target="contentFrame">C0.C1_Protected</a></li>
-<li><a href="examples/C0.C1_Public.html" target="contentFrame">C0.C1_Public</a></li>
-<li><a href="examples/C0_Protected.html" target="contentFrame">C0_Protected</a></li>
-<li><a href="examples/C0_Protected.C1_Protected.html" target="contentFrame">C0_Protected.C1_Protected</a></li>
-<li><a href="examples/C0_Protected.C1_Public.html" target="contentFrame">C0_Protected.C1_Public</a></li>
- </ul>
-<div class="kinds" id="Objects">Objects</div><ul class="list">
- <li id="Objects_o"><a href="examples/obj0$object.html" target="contentFrame">obj0</a></li>
-<li><a href="examples/obj0$object.obj1_Protected$object.html" target="contentFrame">obj0.obj1_Protected</a></li>
-<li><a href="examples/obj0$object.obj1_Public$object.html" target="contentFrame">obj0.obj1_Public</a></li>
-<li><a href="examples/obj0_Protected$object.html" target="contentFrame">obj0_Protected</a></li>
-<li><a href="examples/obj0_Protected$object.obj1_Protected$object.html" target="contentFrame">obj0_Protected.obj1_Protected</a></li>
-<li><a href="examples/obj0_Protected$object.obj1_Public$object.html" target="contentFrame">obj0_Protected.obj1_Public</a></li>
- </ul></div></body>
- </html>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
- <head><title>Scala 2</title>
- <meta http-equiv="content-type" content="text/html; charset=UTF8"></meta><meta content="scaladoc" name="generator"></meta><link href="style.css" type="text/css" rel="stylesheet"></link><script type="text/javascript" src="script.js"></script>
- </head>
- <frameset cols="25%, 75%">
- <frameset rows="50%, 28, 50%">
- <frame src="modules.html" name="modulesFrame"></frame>
- <frame src="nav-classes.html" name="navigationFrame"></frame>
- <frame src="all-classes.html" name="classesFrame"></frame>
- </frameset>
- <frame src="root-content.html" name="contentFrame"></frame>
- </frameset>
- </html>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
- <head><title>List of all classes and objects</title>
- <meta http-equiv="content-type" content="text/html; charset=UTF8"></meta><meta content="scaladoc" name="generator"></meta><link href="style.css" type="text/css" rel="stylesheet"></link><script type="text/javascript" src="script.js"></script>
- </head>
- <body onload="init()"><div><div class="kinds" id="Classes">Classes</div><ul class="list">
- <li id="Classes_C"><a href="examples/C0.html" target="contentFrame">C0</a></li>
-<li><a href="examples/C0.C1_Public.html" target="contentFrame">C0.C1_Public</a></li>
- </ul>
-<div class="kinds" id="Objects">Objects</div><ul class="list">
- <li id="Objects_o"><a href="examples/obj0$object.html" target="contentFrame">obj0</a></li>
-<li><a href="examples/obj0$object.obj1_Public$object.html" target="contentFrame">obj0.obj1_Public</a></li>
- </ul></div></body>
- </html>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
- <head><title>Scala 2</title>
- <meta http-equiv="content-type" content="text/html; charset=UTF8"></meta><meta content="scaladoc" name="generator"></meta><link href="style.css" type="text/css" rel="stylesheet"></link><script type="text/javascript" src="script.js"></script>
- </head>
- <frameset cols="25%, 75%">
- <frameset rows="50%, 28, 50%">
- <frame src="modules.html" name="modulesFrame"></frame>
- <frame src="nav-classes.html" name="navigationFrame"></frame>
- <frame src="all-classes.html" name="classesFrame"></frame>
- </frameset>
- <frame src="root-content.html" name="contentFrame"></frame>
- </frameset>
- </html>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
- <head><title>List of all classes and objects</title>
- <meta http-equiv="content-type" content="text/html; charset=UTF8"></meta><meta content="scaladoc" name="generator"></meta><link href="style.css" type="text/css" rel="stylesheet"></link><script type="text/javascript" src="script.js"></script>
- </head>
- <body onload="init()"><div><div class="kinds" id="Classes">Classes</div><ul class="list">
- <li id="Classes_C"><a href="examples/C0.html" target="contentFrame">C0</a></li>
-<li><a href="examples/C0.C1_Protected.html" target="contentFrame">C0.C1_Protected</a></li>
-<li><a href="examples/C0.C1_Public.html" target="contentFrame">C0.C1_Public</a></li>
-<li><a href="examples/C0_Protected.html" target="contentFrame">C0_Protected</a></li>
-<li><a href="examples/C0_Protected.C1_Protected.html" target="contentFrame">C0_Protected.C1_Protected</a></li>
-<li><a href="examples/C0_Protected.C1_Public.html" target="contentFrame">C0_Protected.C1_Public</a></li>
- </ul>
-<div class="kinds" id="Objects">Objects</div><ul class="list">
- <li id="Objects_o"><a href="examples/obj0$object.html" target="contentFrame">obj0</a></li>
-<li><a href="examples/obj0$object.obj1_Protected$object.html" target="contentFrame">obj0.obj1_Protected</a></li>
-<li><a href="examples/obj0$object.obj1_Public$object.html" target="contentFrame">obj0.obj1_Public</a></li>
-<li><a href="examples/obj0_Protected$object.html" target="contentFrame">obj0_Protected</a></li>
-<li><a href="examples/obj0_Protected$object.obj1_Protected$object.html" target="contentFrame">obj0_Protected.obj1_Protected</a></li>
-<li><a href="examples/obj0_Protected$object.obj1_Public$object.html" target="contentFrame">obj0_Protected.obj1_Public</a></li>
- </ul></div></body>
- </html>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
- <head><title>Scala 2</title>
- <meta http-equiv="content-type" content="text/html; charset=UTF8"></meta><meta content="scaladoc" name="generator"></meta><link href="style.css" type="text/css" rel="stylesheet"></link><script type="text/javascript" src="script.js"></script>
- </head>
- <frameset cols="25%, 75%">
- <frameset rows="50%, 28, 50%">
- <frame src="modules.html" name="modulesFrame"></frame>
- <frame src="nav-classes.html" name="navigationFrame"></frame>
- <frame src="all-classes.html" name="classesFrame"></frame>
- </frameset>
- <frame src="root-content.html" name="contentFrame"></frame>
- </frameset>
- </html>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
- <head><title>List of all classes and objects</title>
- <meta http-equiv="content-type" content="text/html; charset=UTF8"></meta><meta content="scaladoc" name="generator"></meta><link href="style.css" type="text/css" rel="stylesheet"></link><script type="text/javascript" src="script.js"></script>
- </head>
- <body onload="init()"><div><div class="kinds" id="Classes">Classes</div><ul class="list">
- <li id="Classes_C"><a href="examples/C0.html" target="contentFrame">C0</a></li>
-<li><a href="examples/C0.C1_Private.html" target="contentFrame">C0.C1_Private</a></li>
-<li><a href="examples/C0.C1_Protected.html" target="contentFrame">C0.C1_Protected</a></li>
-<li><a href="examples/C0.C1_Public.html" target="contentFrame">C0.C1_Public</a></li>
-<li><a href="examples/C0_Protected.html" target="contentFrame">C0_Protected</a></li>
-<li><a href="examples/C0_Protected.C1_Private.html" target="contentFrame">C0_Protected.C1_Private</a></li>
-<li><a href="examples/C0_Protected.C1_Protected.html" target="contentFrame">C0_Protected.C1_Protected</a></li>
-<li><a href="examples/C0_Protected.C1_Public.html" target="contentFrame">C0_Protected.C1_Public</a></li>
- </ul>
-<div class="kinds" id="Objects">Objects</div><ul class="list">
- <li id="Objects_o"><a href="examples/obj0$object.html" target="contentFrame">obj0</a></li>
-<li><a href="examples/obj0$object.obj1_Private$object.html" target="contentFrame">obj0.obj1_Private</a></li>
-<li><a href="examples/obj0$object.obj1_Protected$object.html" target="contentFrame">obj0.obj1_Protected</a></li>
-<li><a href="examples/obj0$object.obj1_Public$object.html" target="contentFrame">obj0.obj1_Public</a></li>
-<li><a href="examples/obj0_Protected$object.html" target="contentFrame">obj0_Protected</a></li>
-<li><a href="examples/obj0_Protected$object.obj1_Private$object.html" target="contentFrame">obj0_Protected.obj1_Private</a></li>
-<li><a href="examples/obj0_Protected$object.obj1_Protected$object.html" target="contentFrame">obj0_Protected.obj1_Protected</a></li>
-<li><a href="examples/obj0_Protected$object.obj1_Public$object.html" target="contentFrame">obj0_Protected.obj1_Public</a></li>
- </ul></div></body>
- </html>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
- <head><title>Scala 2</title>
- <meta http-equiv="content-type" content="text/html; charset=UTF8"></meta><meta content="scaladoc" name="generator"></meta><link href="style.css" type="text/css" rel="stylesheet"></link><script type="text/javascript" src="script.js"></script>
- </head>
- <frameset cols="25%, 75%">
- <frameset rows="50%, 28, 50%">
- <frame src="modules.html" name="modulesFrame"></frame>
- <frame src="nav-classes.html" name="navigationFrame"></frame>
- <frame src="all-classes.html" name="classesFrame"></frame>
- </frameset>
- <frame src="root-content.html" name="contentFrame"></frame>
- </frameset>
- </html>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
- <head><title>List of all classes and objects</title>
- <meta http-equiv="content-type" content="text/html; charset=UTF8"></meta><meta content="scaladoc" name="generator"></meta><link href="style.css" type="text/css" rel="stylesheet"></link><script type="text/javascript" src="script.js"></script>
- </head>
- <body onload="init()"><div><div class="kinds" id="Classes">Classes</div><ul class="list">
- <li id="Classes_B"><a href="annots/Bar.html" target="contentFrame">Bar</a></li>
-<li><a href="annots/Bar1.html" target="contentFrame">Bar1</a></li>
-<li><a href="annots/Bar2.html" target="contentFrame">Bar2</a></li>
- </ul>
-<div class="kinds" id="Objects">Objects</div><ul class="list">
- <li id="Objects_B"><a href="annots/Bar1.Foo11$object.html" target="contentFrame">Bar1.Foo11</a></li>
-<li id="Objects_F"><a href="annots/Foo$object.html" target="contentFrame">Foo</a></li>
-<li><a href="annots/Foo1$object.html" target="contentFrame">Foo1</a></li>
-<li><a href="annots/Foo1$object.Foo11$object.html" target="contentFrame">Foo1.Foo11</a></li>
-<li><a href="annots/Foo2$object.html" target="contentFrame">Foo2</a></li>
- </ul></div></body>
- </html>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
- <head><title>Scala 2</title>
- <meta http-equiv="content-type" content="text/html; charset=UTF8"></meta><meta content="scaladoc" name="generator"></meta><link href="style.css" type="text/css" rel="stylesheet"></link><script type="text/javascript" src="script.js"></script>
- </head>
- <frameset cols="25%, 75%">
- <frameset rows="50%, 28, 50%">
- <frame src="modules.html" name="modulesFrame"></frame>
- <frame src="nav-classes.html" name="navigationFrame"></frame>
- <frame src="all-classes.html" name="classesFrame"></frame>
- </frameset>
- <frame src="root-content.html" name="contentFrame"></frame>
- </frameset>
- </html>
-
diff --git a/test/disabled/run/docgenerator.scala b/test/disabled/run/docgenerator.scala
deleted file mode 100644
index ebbc869fb1..0000000000
--- a/test/disabled/run/docgenerator.scala
+++ /dev/null
@@ -1,295 +0,0 @@
-object Test {
- import java.io.{File, FileReader, FileWriter}
-
- /** Tests the generation of the HTML documentation for some Scala
- * code samples (see value 'code' below) with different scaladoc
- * options (currently -access:<value>).
- *
- * @author Stephane Micheloud
- */
- def main(args: Array[String]) {
- // overwrites value of UrlContext.generator in file DocUtil.scala
- System.setProperty("doc.generator", "scaladoc")
- var dirname = System.getProperty("partest.output")
- if (dirname eq null) dirname = System.getProperty("java.io.tmpdir")
- val tmpDir = new File(dirname)
- tmpDir.mkdirs()
- test1(tmpDir)
- test2(tmpDir)
- }
-
- private def test1(tmpDir: File) {
- def testOptions(inFile: File, outDirName: String, opts: String*) {
- val outDir = createDir(tmpDir, outDirName)
- val args = Array.concat(Array("-d", outDir.getPath, inFile.getPath), opts.toArray:Array[String])
- if (MainDoc.main0(args)) {
- for (name <- List("all-classes.html", "index.html")) {
- val outFile = new File(outDir, name)
- val n = outFile.length.toInt
- val in = new FileReader(outFile)
- val cbuf = new Array[Char](n)
- in.read(cbuf, 0, n)
- println(new String(cbuf))
- }
- println
- }
- }
- val inFile = {
- val f = new File(tmpDir.getPath, "docgenerator1.scala")
- val writer = new FileWriter(f)
- writer.write(code1, 0, code1.length)
- writer.close
- f
- }
- testOptions(inFile, "test1", "") // none (default is -access:protected)
- testOptions(inFile, "test2", "-access:public")
- testOptions(inFile, "test3", "-access:protected")
- testOptions(inFile, "test4", "-access:private")
- }
-
- private def test2(tmpDir: File) {
- val code ="""
-package annots
-
-@deprecated("msg")
-object Foo { val x = 0 }
-
-@deprecated("msg")
-class Bar { val x = 1 }
-
-object Foo1 {
- @deprecated("msg")
- object Foo11 { val x = 3 }
-}
-
-class Bar1 {
- @deprecated("msg")
- object Foo11 { val x = 2 }
-}
-
-class Bar2 {
- def bar {
- @deprecated("msg")
- object Foo21 { val x = 4 }
- ()
- }
-}
-
-object Foo2 {
- def foo {
- @deprecated("msg")
- object Foo21 { val x = 5 }
- ()
- }
-}
-"""
- val inFile = {
- val f = new File(tmpDir.getPath, "docgenerator2.scala")
- val writer = new FileWriter(f)
- writer.write(code, 0, code.length)
- writer.close
- f
- }
- val outDir = createDir(tmpDir, "annots1")
- val args = Array.concat(Array("-d", outDir.getPath, inFile.getPath))
- if (MainDoc.main0(args)) {
- for (name <- List("all-classes.html", "index.html")) {
- val outFile = new File(outDir, name)
- val n = outFile.length.toInt
- val in = new FileReader(outFile)
- val cbuf = new Array[Char](n)
- in.read(cbuf, 0, n)
- println(new String(cbuf))
- }
- println
- }
- }
-
- object MainDoc {
- import scala.tools.nsc._
- import scala.tools.nsc.doc.DefaultDocDriver
- import scala.tools.nsc.reporters.ConsoleReporter
- def error(msg: String) { Console.err.println(msg) }
- var reporter: ConsoleReporter = _
- def process(args: Array[String]) {
- val docSettings = new scala.tools.nsc.doc.Settings(error)
- // when running that compiler, give it a scala-library to the classpath
- docSettings.classpath.value = System.getProperty("java.class.path")
- reporter = new ConsoleReporter(docSettings)
- val command = new CompilerCommand(args.toList, docSettings)
- try {
- object compiler extends Global(command.settings, reporter) {
- override protected def computeInternalPhases() : Unit = {
- phasesSet += syntaxAnalyzer
- phasesSet += analyzer.namerFactory
- phasesSet += analyzer.typerFactory
- }
- override def forScaladoc = true
- }
- if (reporter.hasErrors) {
- reporter.flush()
- return
- }
- val run = new compiler.Run
- run compile command.files
- object generator extends DefaultDocDriver {
- lazy val global: compiler.type = compiler
- lazy val settings = docSettings
- }
- generator process run.units
- reporter.printSummary()
- } catch {
- case ex @ FatalError(msg) =>
- if (command.settings.debug.value)
- ex.printStackTrace();
- reporter.error(null, "fatal error: " + msg)
- }
- }
- def main(args: Array[String]) {
- process(args)
- exit(if (reporter.hasErrors) 1 else 0)
- }
- // main returning a status (no exit code)
- def main0(args: Array[String]): Boolean = {
- process(args)
- !reporter.hasErrors
- }
- }
-
- private def createDir(parent: File, dirname: String): File = {
- val outDir = new File(parent, dirname)
- outDir.mkdir
- outDir
- }
-
- private val code1 = """
-package examples
-
-abstract class C0 {
- def foo_public
- protected def foo_protected
- private def foo_private {}
- class C1_Public {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
- protected class C1_Protected {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
- private class C1_Private {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
-}
-
-protected abstract class C0_Protected {
- def foo_public
- protected def foo_protected
- private def foo_private {}
- class C1_Public {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
- protected class C1_Protected {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
- private class C1_Private {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
-}
-
-private abstract class C0_Private {
- def foo_public
- protected def foo_protected
- private def foo_private {}
- class C1_Public {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
- protected class C1_Protected {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
- private class C1_Private {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
-}
-
-
-object obj0 {
- def bar_public {}
- protected def bar_protected {}
- private def bar_private {}
- object obj1_Public {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
- protected object obj1_Protected {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
- private object obj1_Private {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
-}
-
-protected object obj0_Protected {
- def bar_public {}
- protected def bar_protected {}
- private def bar_private {}
- object obj1_Public {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
- protected object obj1_Protected {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
- private object obj1_Private {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
-}
-
-private object obj0_Private {
- def bar_public {}
- protected def bar_protected {}
- private def bar_private {}
- object obj1_Public {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
- protected object obj1_Protected {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
- private object obj1_Private {
- val x_public = ()
- protected val x_protected = ()
- private val x_private = ()
- }
-}
-"""
-}
diff --git a/test/disabled/run/indylambda-specialization.scala b/test/disabled/run/indylambda-specialization.scala
deleted file mode 100644
index 2c66073e90..0000000000
--- a/test/disabled/run/indylambda-specialization.scala
+++ /dev/null
@@ -1,15 +0,0 @@
-object Test {
- def assertApply(expected: Boolean) = {
- val frames = Thread.currentThread.getStackTrace.takeWhile(_.getMethodName != "main")
- val usesObjectApply = frames.exists(_.getMethodName == "apply")
- assert(expected == usesObjectApply, frames.mkString("\n"))
- }
- def assertSpecialized() = assertApply(false)
- def assertUnspecialized() = assertApply(true)
- def main(args: Array[String]): Unit = {
- ((i: String) => {assertUnspecialized(); i}).apply("")
- (() => {assertSpecialized(); 0}).apply()
- ((i: Int) => {assertSpecialized(); i}).apply(0)
- ((i: Int, j: Int) => {assertSpecialized(); i + j}).apply(0, 0)
- }
-}
diff --git a/test/disabled/run/javap.check b/test/disabled/run/javap.check
deleted file mode 100644
index 1985fd611d..0000000000
--- a/test/disabled/run/javap.check
+++ /dev/null
@@ -1,18 +0,0 @@
-Arguments: ''
-public class Bippy extends java.lang.Object implements scala.ScalaObject{
-public scala.collection.immutable.List f(scala.collection.immutable.List);
-public Bippy();
-Arguments: '-v'
-public class Bippy extends java.lang.Object implements scala.ScalaObject
-public #28= #25 of #27; //Bippy=class Bippy of class
-public scala.collection.immutable.List f(scala.collection.immutable.List);
-public Bippy();
-Arguments: '-s'
-public class Bippy extends java.lang.Object implements scala.ScalaObject{
-public scala.collection.immutable.List f(scala.collection.immutable.List);
-public Bippy();
-Arguments: '-private'
-public class Bippy extends java.lang.Object implements scala.ScalaObject{
-private int privateMethod();
-public scala.collection.immutable.List f(scala.collection.immutable.List);
-public Bippy();
diff --git a/test/disabled/run/javap.scala b/test/disabled/run/javap.scala
deleted file mode 100644
index 3704d64423..0000000000
--- a/test/disabled/run/javap.scala
+++ /dev/null
@@ -1,24 +0,0 @@
-import scala.tools.nsc.interpreter._
-
-object Test {
- def run(args: String) = {
- println("Arguments: '" + args + "'")
- ILoop.run("""
- |class Bippy {
- | private def privateMethod = 5
- | def f[T <: List[_]](x: T): T = x
- |}
- |
- |:javap %s Bippy
- """.stripMargin.format(args)).lines map (_.trim) filter { line =>
- (line startsWith "private") || (line startsWith "public")
- } foreach println
- }
-
- def main(args: Array[String]): Unit = {
- run("")
- run("-v")
- run("-s")
- run("-private")
- }
-}
diff --git a/test/disabled/run/lisp.check b/test/disabled/run/lisp.check
deleted file mode 100644
index 64053f26d0..0000000000
--- a/test/disabled/run/lisp.check
+++ /dev/null
@@ -1,26 +0,0 @@
-(lambda (x) (+ (* x x) 1))
-(lambda (x) (+ (* x x) 1))
-
-( '(1 2 3)) = (1 2 3)
-(car '(1 2 3)) = 1
-(cdr '(1 2 3)) = (2 3)
-(null? '(2 3)) = 0
-(null? '()) = 1
-
-faculty(10) = 3628800
-faculty(10) = 3628800
-foobar = ("a" "bc" "def" "z")
-
-List('lambda, List('x), List('+, List('*, 'x, 'x), 1))
-(lambda (x) (+ (* x x) 1))
-
-( '(1 2 3)) = (1 2 3)
-(car '(1 2 3)) = 1
-(cdr '(1 2 3)) = (2 3)
-(null? '(2 3)) = 0
-(null? '()) = 1
-
-faculty(10) = 3628800
-faculty(10) = 3628800
-foobar = ("a" "bc" "def" "z")
-
diff --git a/test/disabled/run/lisp.scala b/test/disabled/run/lisp.scala
deleted file mode 100644
index 73f24da757..0000000000
--- a/test/disabled/run/lisp.scala
+++ /dev/null
@@ -1,518 +0,0 @@
-//############################################################################
-// Lisp interpreter
-//############################################################################
-
-//############################################################################
-// Lisp Scanner
-
-class LispTokenizer(s: String) extends Iterator[String] {
- private var i = 0;
- private def isDelimiter(ch: Char) = ch <= ' ' || ch == '(' || ch == ')'
- def hasNext: Boolean = {
- while (i < s.length() && s.charAt(i) <= ' ') i += 1
- i < s.length()
- }
- def next: String =
- if (hasNext) {
- val start = i
- if (isDelimiter(s charAt i)) i += 1
- else
- do i = i + 1
- while (!isDelimiter(s charAt i))
- s.substring(start, i)
- } else sys.error("premature end of string")
-}
-
-//############################################################################
-// Lisp Interface
-
-trait Lisp {
- type Data
-
- def string2lisp(s: String): Data
- def lisp2string(s: Data): String
-
- def evaluate(d: Data): Data
- // !!! def evaluate(s: String): Data = evaluate(string2lisp(s))
- def evaluate(s: String): Data
-}
-
-//############################################################################
-// Lisp Implementation Using Case Classes
-
-object LispCaseClasses extends Lisp {
-
- import List.range
-
- trait Data {
- def elemsToString(): String = toString();
- }
- case class CONS(car: Data, cdr: Data) extends Data {
- override def toString() = "(" + elemsToString() + ")";
- override def elemsToString() = car.toString() + (cdr match {
- case NIL() => ""
- case _ => " " + cdr.elemsToString();
- })
- }
- case class NIL() extends Data { // !!! use case object
- override def toString() = "()";
- }
- case class SYM(name: String) extends Data {
- override def toString() = name;
- }
- case class NUM(x: Int) extends Data {
- override def toString() = x.toString();
- }
- case class STR(x: String) extends Data {
- override def toString() = "\"" + x + "\"";
- }
- case class FUN(f: List[Data] => Data) extends Data {
- override def toString() = "<fn>";
- }
-
- def list(): Data =
- NIL();
- def list(x0: Data): Data =
- CONS(x0, NIL());
- def list(x0: Data, x1: Data): Data =
- CONS(x0, list(x1));
- def list(x0: Data, x1: Data, x2: Data): Data =
- CONS(x0, list(x1, x2));
- def list(x0: Data, x1: Data, x2: Data, x3: Data): Data =
- CONS(x0, list(x1, x2, x3));
- def list(x0: Data, x1: Data, x2: Data, x3: Data, x4: Data): Data =
- CONS(x0, list(x1, x2, x3, x4));
- def list(x0: Data, x1: Data, x2: Data, x3: Data, x4: Data, x5: Data): Data =
- CONS(x0, list(x1, x2, x3, x4, x5));
- def list(x0: Data, x1: Data, x2: Data, x3: Data, x4: Data, x5: Data,
- x6: Data): Data =
- CONS(x0, list(x1, x2, x3, x4, x5, x6));
- def list(x0: Data, x1: Data, x2: Data, x3: Data, x4: Data, x5: Data,
- x6: Data, x7: Data): Data =
- CONS(x0, list(x1, x2, x3, x4, x5, x6, x7));
- def list(x0: Data, x1: Data, x2: Data, x3: Data, x4: Data, x5: Data,
- x6: Data, x7: Data, x8: Data): Data =
- CONS(x0, list(x1, x2, x3, x4, x5, x6, x7, x8));
- def list(x0: Data, x1: Data, x2: Data, x3: Data, x4: Data, x5: Data,
- x6: Data, x7: Data, x8: Data, x9: Data): Data =
- CONS(x0, list(x1, x2, x3, x4, x5, x6, x7, x8, x9));
-
- var curexp: Data = null
- var trace: Boolean = false
- var indent: Int = 0
-
- def lispError[a](msg: String): a =
- sys.error("error: " + msg + "\n" + curexp);
-
- trait Environment {
- def lookup(n: String): Data;
- def extendRec(name: String, expr: Environment => Data) =
- new Environment {
- def lookup(n: String): Data =
- if (n == name) expr(this) else Environment.this.lookup(n);
- }
- def extend(name: String, v: Data) = extendRec(name, (env1 => v));
- }
- val EmptyEnvironment = new Environment {
- def lookup(n: String): Data = lispError("undefined: " + n);
- }
-
- def toList(x: Data): List[Data] = x match {
- case NIL() => List()
- case CONS(y, ys) => y :: toList(ys)
- case _ => lispError("malformed list: " + x);
- }
-
- def toBoolean(x: Data) = x match {
- case NUM(0) => false
- case _ => true
- }
-
- def normalize(x: Data): Data = x match {
- case CONS(SYM("def"),
- CONS(CONS(SYM(name), args), CONS(body, CONS(expr, NIL())))) =>
- normalize(list(SYM("def"),
- SYM(name), list(SYM("lambda"), args, body), expr))
- case CONS(SYM("cond"), CONS(CONS(SYM("else"), CONS(expr, NIL())),NIL())) =>
- normalize(expr)
- case CONS(SYM("cond"), CONS(CONS(test, CONS(expr, NIL())), rest)) =>
- normalize(list(SYM("if"), test, expr, CONS(SYM("cond"), rest)))
- case CONS(h, t) => CONS(normalize(h), normalize(t))
- case _ => x
- }
-
- def eval(x: Data, env: Environment): Data = {
- val prevexp = curexp;
- curexp = x;
- if (trace) {
- for (x <- range(1, indent)) Console.print(" ");
- Console.println("===> " + x);
- indent = indent + 1;
- }
- val result = eval1(x, env);
- if (trace) {
- indent = indent - 1;
- for (x <- range(1, indent)) Console.print(" ");
- Console.println("<=== " + result);
- }
- curexp = prevexp;
- result
- }
-
- def eval1(x: Data, env: Environment): Data = x match {
- case SYM(name) =>
- env lookup name
- case CONS(SYM("def"), CONS(SYM(name), CONS(y, CONS(z, NIL())))) =>
- eval(z, env.extendRec(name, (env1 => eval(y, env1))))
- case CONS(SYM("val"), CONS(SYM(name), CONS(y, CONS(z, NIL())))) =>
- eval(z, env.extend(name, eval(y, env)))
- case CONS(SYM("lambda"), CONS(params, CONS(y, NIL()))) =>
- mkLambda(params, y, env)
- case CONS(SYM("if"), CONS(c, CONS(t, CONS(e, NIL())))) =>
- if (toBoolean(eval(c, env))) eval(t, env) else eval(e, env)
- case CONS(SYM("quote"), CONS(x, NIL())) =>
- x
- case CONS(y, xs) =>
- apply(eval(y, env), toList(xs) map (x => eval(x, env)))
- case NUM(_) => x
- case STR(_) => x
- case FUN(_) => x
- case _ =>
- lispError("illegal term")
- }
-
- def apply(fn: Data, args: List[Data]): Data = fn match {
- case FUN(f) => f(args);
- case _ => lispError("application of non-function: " + fn);
- }
-
- def mkLambda(params: Data, expr: Data, env: Environment): Data = {
-
- def extendEnv(env: Environment,
- ps: List[String], args: List[Data]): Environment =
- (ps, args) match {
- case (List(), List()) =>
- env
- case (p :: ps1, arg :: args1) =>
- extendEnv(env.extend(p, arg), ps1, args1)
- case _ =>
- lispError("wrong number of arguments")
- }
-
- val ps: List[String] = toList(params) map {
- case SYM(name) => name
- case _ => sys.error("illegal parameter list");
- }
-
- FUN(args => eval(expr, extendEnv(env, ps, args)))
- }
-
- val globalEnv = EmptyEnvironment
- .extend("=", FUN({
- case List(NUM(arg1),NUM(arg2)) => NUM(if (arg1 == arg2) 1 else 0)
- case List(STR(arg1),STR(arg2)) => NUM(if (arg1 == arg2) 1 else 0)}))
- .extend("+", FUN({
- case List(NUM(arg1),NUM(arg2)) => NUM(arg1 + arg2)
- case List(STR(arg1),STR(arg2)) => STR(arg1 + arg2)}))
- .extend("-", FUN({
- case List(NUM(arg1),NUM(arg2)) => NUM(arg1 - arg2)}))
- .extend("*", FUN({
- case List(NUM(arg1),NUM(arg2)) => NUM(arg1 * arg2)}))
- .extend("/", FUN({
- case List(NUM(arg1),NUM(arg2)) => NUM(arg1 / arg2)}))
- .extend("car", FUN({
- case List(CONS(x, xs)) => x}))
- .extend("cdr", FUN({
- case List(CONS(x, xs)) => xs}))
- .extend("null?", FUN({
- case List(NIL()) => NUM(1)
- case _ => NUM(0)}))
- .extend("cons", FUN({
- case List(x, y) => CONS(x, y)}));
-
- def evaluate(x: Data): Data = eval(normalize(x), globalEnv);
- def evaluate(s: String): Data = evaluate(string2lisp(s));
-
- def string2lisp(s: String): Data = {
- val it = new LispTokenizer(s);
- def parseExpr(token: String): Data = {
- if (token == "(") parseList
- else if (token == ")") sys.error("unbalanced parentheses")
- else if ('0' <= token.charAt(0) && token.charAt(0) <= '9')
- NUM(token.toInt)
- else if (token.charAt(0) == '\"' && token.charAt(token.length()-1)=='\"')
- STR(token.substring(1,token.length() - 1))
- else SYM(token)
- }
- def parseList: Data = {
- val token = it.next;
- if (token == ")") NIL() else CONS(parseExpr(token), parseList)
- }
- parseExpr(it.next)
- }
-
- def lisp2string(d: Data): String = d.toString();
-}
-
-//############################################################################
-// Lisp Implementation Using Any
-
-object LispAny extends Lisp {
-
- import List._;
-
- type Data = Any;
-
- case class Lambda(f: List[Data] => Data);
-
- var curexp: Data = null;
- var trace: Boolean = false;
- var indent: Int = 0;
-
- def lispError[a](msg: String): a =
- sys.error("error: " + msg + "\n" + curexp);
-
- trait Environment {
- def lookup(n: String): Data;
- def extendRec(name: String, expr: Environment => Data) =
- new Environment {
- def lookup(n: String): Data =
- if (n == name) expr(this) else Environment.this.lookup(n);
- }
- def extend(name: String, v: Data) = extendRec(name, (env1 => v));
- }
- val EmptyEnvironment = new Environment {
- def lookup(n: String): Data = lispError("undefined: " + n);
- }
-
- def asList(x: Data): List[Data] = x match {
- case y: List[_] => y
- case _ => lispError("malformed list: " + x)
- }
-
- def asInt(x: Data): Int = x match {
- case y: Int => y
- case _ => lispError("not an integer: " + x)
- }
-
- def asString(x: Data): String = x match {
- case y: String => y
- case _ => lispError("not a string: " + x)
- }
-
- def asBoolean(x: Data): Boolean = x != 0
-
- def normalize(x: Data): Data = x match {
- case 'and :: x :: y :: Nil =>
- normalize('if :: x :: y :: 0 :: Nil)
- case 'or :: x :: y :: Nil =>
- normalize('if :: x :: 1 :: y :: Nil)
- case 'def :: (name :: args) :: body :: expr :: Nil =>
- normalize('def :: name :: ('lambda :: args :: body :: Nil) :: expr :: Nil)
- case 'cond :: ('else :: expr :: Nil) :: rest =>
- normalize(expr);
- case 'cond :: (test :: expr :: Nil) :: rest =>
- normalize('if :: test :: expr :: ('cond :: rest) :: Nil)
- case 'cond :: 'else :: expr :: Nil =>
- normalize(expr)
- case h :: t =>
- normalize(h) :: asList(normalize(t))
- case _ =>
- x
- }
-
- def eval(x: Data, env: Environment): Data = {
- val prevexp = curexp;
- curexp = x;
- if (trace) {
- for (x <- range(1, indent)) Console.print(" ");
- Console.println("===> " + x);
- indent += 1;
- }
- val result = eval1(x, env);
- if (trace) {
- indent -= 1;
- for (x <- range(1, indent)) Console.print(" ");
- Console.println("<=== " + result);
- }
- curexp = prevexp;
- result
- }
-
- def eval1(x: Data, env: Environment): Data = x match {
- case Symbol(name) =>
- env lookup name
- case 'def :: Symbol(name) :: y :: z :: Nil =>
- eval(z, env.extendRec(name, (env1 => eval(y, env1))))
- case 'val :: Symbol(name) :: y :: z :: Nil =>
- eval(z, env.extend(name, eval(y, env)))
- case 'lambda :: params :: y :: Nil =>
- mkLambda(params, y, env)
- case 'if :: c :: y :: z :: Nil =>
- if (asBoolean(eval(c, env))) eval(y, env) else eval(z, env)
- case 'quote :: y :: Nil =>
- y
- case y :: z =>
- apply(eval(y, env), z map (x => eval(x, env)))
- case Lambda(_) => x
- case y: String => x
- case y: Int => x
- case y => lispError("illegal term")
- }
-
- def lisp2string(x: Data): String = x match {
- case Symbol(name) => name
- case Nil => "()"
- case y :: ys =>
- def list2string(xs: List[Data]): String = xs match {
- case List() => ""
- case y :: ys => " " + lisp2string(y) + list2string(ys)
- }
- "(" + lisp2string(y) + list2string(ys) + ")"
- case _ => if (x.isInstanceOf[String]) "\"" + x + "\""; else x.toString()
- }
-
- def apply(fn: Data, args: List[Data]): Data = fn match {
- case Lambda(f) => f(args);
- case _ => lispError("application of non-function: " + fn + " to " + args);
- }
-
- def mkLambda(params: Data, expr: Data, env: Environment): Data = {
-
- def extendEnv(env: Environment,
- ps: List[String], args: List[Data]): Environment =
- (ps, args) match {
- case (List(), List()) =>
- env
- case (p :: ps1, arg :: args1) =>
- extendEnv(env.extend(p, arg), ps1, args1)
- case _ =>
- lispError("wrong number of arguments")
- }
-
- val ps: List[String] = asList(params) map {
- case Symbol(name) => name
- case _ => sys.error("illegal parameter list");
- }
-
- Lambda(args => eval(expr, extendEnv(env, ps, args)))
- }
-
- val globalEnv = EmptyEnvironment
- .extend("=", Lambda{
- case List(arg1, arg2) => if(arg1 == arg2) 1 else 0})
- .extend("+", Lambda{
- case List(arg1: Int, arg2: Int) => arg1 + arg2
- case List(arg1: String, arg2: String) => arg1 + arg2})
- .extend("-", Lambda{
- case List(arg1: Int, arg2: Int) => arg1 - arg2})
- .extend("*", Lambda{
- case List(arg1: Int, arg2: Int) => arg1 * arg2})
- .extend("/", Lambda{
- case List(arg1: Int, arg2: Int) => arg1 / arg2})
- .extend("nil", Nil)
- .extend("cons", Lambda{
- case List(arg1, arg2) => arg1 :: asList(arg2)})
- .extend("car", Lambda{
- case List(x :: xs) => x})
- .extend("cdr", Lambda{
- case List(x :: xs) => xs})
- .extend("null?", Lambda{
- case List(Nil) => 1
- case _ => 0});
-
- def evaluate(x: Data): Data = eval(normalize(x), globalEnv);
- def evaluate(s: String): Data = evaluate(string2lisp(s));
-
- def string2lisp(s: String): Data = {
- val it = new LispTokenizer(s);
- def parseExpr(token: String): Data = {
- if (token == "(") parseList
- else if (token == ")") sys.error("unbalanced parentheses")
- //else if (Character.isDigit(token.charAt(0)))
- else if (token.charAt(0).isDigit)
- token.toInt
- else if (token.charAt(0) == '\"' && token.charAt(token.length()-1)=='\"')
- token.substring(1,token.length() - 1)
- else Symbol(token)
- }
- def parseList: List[Data] = {
- val token = it.next;
- if (token == ")") Nil else parseExpr(token) :: parseList
- }
- parseExpr(it.next)
- }
-}
-
-//############################################################################
-// List User
-
-class LispUser(lisp: Lisp) {
-
- import lisp._;
-
- def evaluate(s: String) = lisp2string(lisp.evaluate(s));
-
- def run = {
-
- Console.println(string2lisp("(lambda (x) (+ (* x x) 1))").asInstanceOf[AnyRef]);
- Console.println(lisp2string(string2lisp("(lambda (x) (+ (* x x) 1))")));
- Console.println;
-
- Console.println("( '(1 2 3)) = " + evaluate(" (quote(1 2 3))"));
- Console.println("(car '(1 2 3)) = " + evaluate("(car (quote(1 2 3)))"));
- Console.println("(cdr '(1 2 3)) = " + evaluate("(cdr (quote(1 2 3)))"));
- Console.println("(null? '(2 3)) = " + evaluate("(null? (quote(2 3)))"));
- Console.println("(null? '()) = " + evaluate("(null? (quote()))"));
- Console.println;
-
- Console.println("faculty(10) = " + evaluate(
- "(def (faculty n) " +
- "(if (= n 0) " +
- "1 " +
- "(* n (faculty (- n 1)))) " +
- "(faculty 10))"));
- Console.println("faculty(10) = " + evaluate(
- "(def (faculty n) " +
- "(cond " +
- "((= n 0) 1) " +
- "(else (* n (faculty (- n 1))))) " +
- "(faculty 10))"));
- Console.println("foobar = " + evaluate(
- "(def (foo n) " +
- "(cond " +
- "((= n 0) \"a\")" +
- "((= n 1) \"b\")" +
- "((= (/ n 2) 1) " +
- "(cond " +
- "((= n 2) \"c\")" +
- "(else \"d\")))" +
- "(else " +
- "(def (bar m) " +
- "(cond " +
- "((= m 0) \"e\")" +
- "((= m 1) \"f\")" +
- "(else \"z\"))" +
- "(bar (- n 4)))))" +
- "(val nil (quote ())" +
- "(val v1 (foo 0) " +
- "(val v2 (+ (foo 1) (foo 2)) " +
- "(val v3 (+ (+ (foo 3) (foo 4)) (foo 5)) " +
- "(val v4 (foo 6) " +
- "(cons v1 (cons v2 (cons v3 (cons v4 nil))))))))))"));
- Console.println;
- }
-}
-
-//############################################################################
-// Main
-
-object Test {
- def main(args: Array[String]) {
- new LispUser(LispCaseClasses).run;
- new LispUser(LispAny).run;
- ()
- }
-}
-
-//############################################################################
diff --git a/test/disabled/run/script-positions.scala b/test/disabled/run/script-positions.scala
deleted file mode 100644
index 2c80d550c0..0000000000
--- a/test/disabled/run/script-positions.scala
+++ /dev/null
@@ -1,86 +0,0 @@
-import scala.tools.nsc._
-import util.stringFromStream
-
-// Testing "scripts" without the platform delights which accompany actual scripts.
-object Scripts {
-
- val test1 =
-"""#!/bin/sh
- exec scala $0 $@
-!#
-
-println("statement 1")
-println("statement 2".thisisborked)
-println("statement 3")
-"""
-
- val output1 =
-"""thisisborked.scala:6: error: value thisisborked is not a member of java.lang.String
-println("statement 2".thisisborked)
- ^
-one error found"""
- val test2 =
-"""#!scala
-// foo
-// bar
-!#
-
-val x = "line 6"
-val y = "line 7"
-val z "line 8""""
-
- val output2 =
-"""bob.scala:8: error: '=' expected but string literal found.
-val z "line 8"
- ^
-bob.scala:8: error: illegal start of simple expression
-val z "line 8"
- ^
-two errors found"""
-}
-
-object Test {
- import Scripts._
-
- def settings = new GenericRunnerSettings(println _)
- settings.nocompdaemon.value = true
-
- def runScript(code: String): String =
- stringFromStream(stream =>
- Console.withOut(stream) {
- Console.withErr(stream) {
- ScriptRunner.runCommand(settings, code, Nil)
- }
- }
- )
-
- val tests: List[(String, String)] = List(
- test1 -> output1,
- test2 -> output2
- )
- // def lines(s: String) = s split """\r\n|\r|\n""" toList
- def lines(s: String) = s split "\\n" toList
-
- // strip the random temp filename from error msgs
- def stripFilename(s: String) = (s indexOf ".scala:") match {
- case -1 => s
- case idx => s drop (idx + 7)
- }
- def toLines(text: String) = lines(text) map stripFilename
-
- def main(args: Array[String]): Unit = {
- for ((code, expected) <- tests) {
- val out = toLines(runScript(code))
- val exp = toLines(expected)
- val nomatch = out zip exp filter { case (x, y) => x != y }
- val success = out.size == exp.size && nomatch.isEmpty
-
- assert(
- success,
- "Output doesn't match expected:\n" +
- "Expected:\n" + expected +
- "Actual:\n" + out.mkString("\n")
- )
- }
- }
-}
diff --git a/test/disabled/run/syncchannel.check b/test/disabled/run/syncchannel.check
deleted file mode 100644
index d81cc0710e..0000000000
--- a/test/disabled/run/syncchannel.check
+++ /dev/null
@@ -1 +0,0 @@
-42
diff --git a/test/disabled/run/syncchannel.scala b/test/disabled/run/syncchannel.scala
deleted file mode 100644
index 66ae47fd0a..0000000000
--- a/test/disabled/run/syncchannel.scala
+++ /dev/null
@@ -1,6 +0,0 @@
-object Test {
- def main(args: Array[String]) {
- val c = new scala.concurrent.SyncChannel[Int]
- scala.concurrent.ops.par({ c.write(42) }, { println(c.read) })
- }
-}
diff --git a/test/disabled/run/t2886.scala b/test/disabled/run/t2886.scala
deleted file mode 100644
index eb392f0c58..0000000000
--- a/test/disabled/run/t2886.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-object Test {
- def test(name: String, address: String) = null
- def main(args: Array[String]) = {
- val tree = scala.reflect.Code.lift((x:String) => test(address=x,name=x)).tree
- println(tree)
- }
-}
diff --git a/test/disabled/run/t2946/Parsers.scala b/test/disabled/run/t2946/Parsers.scala
deleted file mode 100644
index c0961034c4..0000000000
--- a/test/disabled/run/t2946/Parsers.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-class Parser {
- def parse(t: Any): Unit = {
- }
-}
diff --git a/test/disabled/run/t2946/ResponseCommon.scala b/test/disabled/run/t2946/ResponseCommon.scala
deleted file mode 100644
index fa9d8acccb..0000000000
--- a/test/disabled/run/t2946/ResponseCommon.scala
+++ /dev/null
@@ -1,14 +0,0 @@
-trait ResponseCommon extends Parser {
- private[this] var paramsParser: Parser = null
- def withParamsParser(parser: Parser) = {paramsParser = parser; this}
-
- class Foo {
- println(paramsParser)
- }
-
- override abstract def parse(t: Any): Unit = t match {
- case ("params", value: List[_]) => value.foreach {paramsParser.parse(_)}
- case _ => super.parse(t)
- }
-}
-
diff --git a/test/disabled/run/t2946/Test.scala b/test/disabled/run/t2946/Test.scala
deleted file mode 100644
index e9d9896a0e..0000000000
--- a/test/disabled/run/t2946/Test.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-class Test extends Parser with ResponseCommon
-
-object Test {
- def main(args: Array[String]) {
- new Test
- }
-}
diff --git a/test/disabled/run/t4146.scala b/test/disabled/run/t4146.scala
deleted file mode 100644
index a17de50ee1..0000000000
--- a/test/disabled/run/t4146.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-object bob extends App {
- var name = "Bob"
-}
-
-object Test extends App {
- assert(bob.name == "Bob")
-}
diff --git a/test/disabled/run/t4279.scala b/test/disabled/run/t4279.scala
deleted file mode 100644
index 62cc436302..0000000000
--- a/test/disabled/run/t4279.scala
+++ /dev/null
@@ -1,38 +0,0 @@
-import scala.tools.partest._
-
-// Attempting to verify slice isn't 100,000x slower
-// with views than non-views.
-class Runner(num: Int, reps: Int) extends TestUtil {
- var dummy = 0
- val range = Array.range(0, num)
-
- def iteratorSlice = {
- def it = range.iterator.slice(num - 2, num)
- for (i <- 1 to reps)
- it foreach (dummy = _)
- }
- def viewSlice = {
- val view = range.view.slice(num - 2, num)
- for (i <- 1 to reps)
- view foreach (dummy = _)
- }
- def straightSlice = {
- val xs = range.slice(num - 2, num)
- for (i <- 1 to reps)
- xs foreach (dummy = _)
- }
- def run(multiple: Double) = {
- verifySpeed(straightSlice, iteratorSlice, multiple)
- verifySpeed(straightSlice, viewSlice, multiple)
- }
-}
-
-object Test {
- def main(args: Array[String]): Unit = {
- // warmup
- { val r = new Runner(1000000, 10) ; r.straightSlice ; r.iteratorSlice ; r.viewSlice }
-
- new Runner(10000000, 10) run 500
- new Runner(10000000, 50) run 300
- }
-}
diff --git a/test/disabled/run/t4532.check b/test/disabled/run/t4532.check
deleted file mode 100644
index 47a9809248..0000000000
--- a/test/disabled/run/t4532.check
+++ /dev/null
@@ -1,15 +0,0 @@
-Type in expressions to have them evaluated.
-Type :help for more information.
-
-scala>
-
-scala> object Bippy { class Dingus ; object Bop }
-defined module Bippy
-
-scala> :javap Bippy.Dingus
-Compiled from "<console>"public class Bippy$Dingus extends java.lang.Object implements scala.ScalaObject{ public Bippy$Dingus();}
-scala> :javap Bippy.Bop
-Compiled from "<console>"public final class Bippy$Bop$ extends java.lang.Object implements scala.ScalaObject{ public static final Bippy$Bop$ MODULE$; public static {}; public Bippy$Bop$();}
-scala>
-
-scala>
diff --git a/test/disabled/run/t4532.scala b/test/disabled/run/t4532.scala
deleted file mode 100644
index 0dabd2dca4..0000000000
--- a/test/disabled/run/t4532.scala
+++ /dev/null
@@ -1,34 +0,0 @@
-import scala.tools.partest.ReplTest
-import scala.tools.util.Javap
-
-object Test extends ReplTest {
-
- // ugh, windows
- def expectedOutput =
-"""Type in expressions to have them evaluated.
-Type :help for more information.
-
-scala>
-
-scala> object Bippy { class Dingus ; object Bop }
-defined module Bippy
-
-scala> :javap Bippy.Dingus
-Compiled from "<console>"public class Bippy$Dingus extends java.lang.Object implements scala.ScalaObject{ public Bippy$Dingus();}
-scala> :javap Bippy.Bop
-Compiled from "<console>"public final class Bippy$Bop$ extends java.lang.Object implements scala.ScalaObject{ public static final Bippy$Bop$ MODULE$; public static {}; public Bippy$Bop$();}
-scala>
-
-scala>
-"""
-
- override def eval() =
- if (Javap.isAvailable()) super.eval()
- else expectedOutput.lines
-
- def code = """
- |object Bippy { class Dingus ; object Bop }
- |:javap Bippy.Dingus
- |:javap Bippy.Bop
- """.stripMargin
-}
diff --git a/test/disabled/run/t4602.scala b/test/disabled/run/t4602.scala
deleted file mode 100644
index 655c350497..0000000000
--- a/test/disabled/run/t4602.scala
+++ /dev/null
@@ -1,57 +0,0 @@
-import java.io.{File, FileOutputStream, BufferedOutputStream, FileWriter, ByteArrayOutputStream, PrintStream}
-import tools.nsc.{CompileClient, CompileServer}
-import java.util.concurrent.{CountDownLatch, TimeUnit}
-
-object Test extends App {
- val startupLatch = new CountDownLatch(1)
- // we have to explicitly launch our server because when the client launches a server it uses
- // the "scala" shell command meaning whatever version of scala (and whatever version of libraries)
- // happens to be in the path gets used
- val t = new Thread(new Runnable {
- def run() = {
- CompileServer.execute(() => startupLatch.countDown(), Array[String]())
- }
- })
- t setDaemon true
- t.start()
- if (!startupLatch.await(2, TimeUnit.MINUTES))
- sys error "Timeout waiting for server to start"
-
- val baos = new ByteArrayOutputStream()
- val ps = new PrintStream(baos)
-
- val outdir = scala.reflect.io.Directory(sys.props("partest.output"))
-
- val dirNameAndPath = (1 to 2).toList map {number =>
- val name = s"Hello${number}"
- val dir = outdir / number.toString
- (dir, name, dir / s"${name}.scala")
- }
-
- dirNameAndPath foreach {case (dir, name, path) =>
- dir.createDirectory()
- val file = path.jfile
- val out = new FileWriter(file)
- try
- out.write(s"object ${name}\n")
- finally
- out.close
- }
-
- val success = (scala.Console withOut ps) {
- dirNameAndPath foreach {case (path, name, _) =>
- CompileClient.process(Array("-verbose", "-current-dir", path.toString, s"${name}.scala"))
- }
-
- CompileClient.process(Array("-shutdown"))
- }
-
- // now make sure we got success and the correct normalized paths
- val msg = baos.toString()
-
- assert(success, s"got a failure. Full results were: \n${msg}")
- dirNameAndPath foreach {case (_, _, path) =>
- val expected = s"Input files after normalizing paths: ${path}"
- assert(msg contains expected, s"could not find '${expected}' in output. Full results were: \n${msg}")
- }
-}
diff --git a/test/disabled/run/t6987.check b/test/disabled/run/t6987.check
deleted file mode 100644
index 86fc96c679..0000000000
--- a/test/disabled/run/t6987.check
+++ /dev/null
@@ -1 +0,0 @@
-got successful verbose results!
diff --git a/test/disabled/run/t6987.scala b/test/disabled/run/t6987.scala
deleted file mode 100644
index 37e91d61ae..0000000000
--- a/test/disabled/run/t6987.scala
+++ /dev/null
@@ -1,43 +0,0 @@
-import java.io._
-import tools.nsc.{CompileClient, CompileServer}
-import java.util.concurrent.{CountDownLatch, TimeUnit}
-
-object Test extends App {
- val startupLatch = new CountDownLatch(1)
- // we have to explicitly launch our server because when the client launches a server it uses
- // the "scala" shell command meaning whatever version of scala (and whatever version of libraries)
- // happens to be in the path gets used
- val t = new Thread(new Runnable {
- def run() = {
- CompileServer.execute(() => startupLatch.countDown(), Array[String]())
- }
- })
- t setDaemon true
- t.start()
- if (!startupLatch.await(2, TimeUnit.MINUTES))
- sys error "Timeout waiting for server to start"
-
- val baos = new ByteArrayOutputStream()
- val ps = new PrintStream(baos)
-
- val success = (scala.Console withOut ps) {
- // shut down the server via the client using the verbose flag
- CompileClient.process(Array("-shutdown", "-verbose"))
- }
-
- // now make sure we got success and a verbose result
- val msg = baos.toString()
-
- if (success) {
- if (msg contains "Settings after normalizing paths") {
- println("got successful verbose results!")
- } else {
- println("did not get the string expected, full results were:")
- println(msg)
- }
- } else {
- println("got a failure. Full results were:")
- println(msg)
- }
- scala.Console.flush
-}
diff --git a/test/disabled/run/t8946.scala b/test/disabled/run/t8946.scala
deleted file mode 100644
index a248a20501..0000000000
--- a/test/disabled/run/t8946.scala
+++ /dev/null
@@ -1,29 +0,0 @@
-// Tests to assert that references to threads are not strongly held when scala-reflection is used inside of them.
-object Test {
- import scala.ref.WeakReference
-
- def forceGc() = {
- var obj = new Object
- val ref = new WeakReference(obj)
- obj = null;
- while(ref.get.nonEmpty)
- Array.ofDim[Byte](16 * 1024 * 1024)
- }
-
- def main(args: Array[String]): Unit = {
- val threads = for (i <- (1 to 16)) yield {
- val t = new Thread {
- override def run(): Unit = {
- import reflect.runtime.universe._
- typeOf[List[String]] <:< typeOf[Seq[_]]
- }
- }
- t.start()
- t.join()
- WeakReference(t)
- }
- forceGc()
- val nonGCdThreads = threads.filter(_.get.nonEmpty).length
- assert(nonGCdThreads == 0, s"${nonGCdThreads} threads were retained; expected 0.")
- }
-}
diff --git a/test/disabled/scalacheck/HashTrieSplit.scala b/test/disabled/scalacheck/HashTrieSplit.scala
deleted file mode 100644
index cbf565095c..0000000000
--- a/test/disabled/scalacheck/HashTrieSplit.scala
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
-
-import collection._
-
-
-
-
-// checks whether hash tries split their iterators correctly
-// even after some elements have been traversed
-object Test {
- def main(args: Array[String]) {
- doesSplitOk
- }
-
- def doesSplitOk = {
- val sz = 2000
- var ht = new parallel.immutable.ParHashMap[Int, Int]
- // println("creating trie")
- for (i <- 0 until sz) ht += ((i + sz, i))
- // println("created trie")
- for (n <- 0 until (sz - 1)) {
- // println("---------> n = " + n)
- val pit = ht.parallelIterator
- val pit2 = ht.parallelIterator
- var i = 0
- while (i < n) {
- pit.next
- pit2.next
- i += 1
- }
- // println("splitting")
- val pits = pit.split
- val fst = pits(0).toSet
- val snd = pits(1).toSet
- val orig = pit2.toSet
- if (orig.size != (fst.size + snd.size) || orig != (fst ++ snd)) {
- println("Original: " + orig)
- println("First: " + fst)
- println("Second: " + snd)
- assert(false)
- }
- }
- }
-}
diff --git a/test/disabled/script/fact.args b/test/disabled/script/fact.args
deleted file mode 100644
index 7ed6ff82de..0000000000
--- a/test/disabled/script/fact.args
+++ /dev/null
@@ -1 +0,0 @@
-5
diff --git a/test/disabled/script/fact.bat b/test/disabled/script/fact.bat
deleted file mode 100755
index 6f02b62a36..0000000000
--- a/test/disabled/script/fact.bat
+++ /dev/null
@@ -1,17 +0,0 @@
-::#!
-:: fact - A simple Scala batch file that prints out the factorial
-:: of the argument specified on the command line.
-
-@echo off
-call scala -nocompdaemon %0 %*
-goto :eof
-::!#
-
-
-val x = argv(0).toInt
-
-def fact(x: Int):Int =
- if(x==0) 1
- else x*fact(x-1)
-
-Console.println("fact(" + x + ") = " + fact(x))
diff --git a/test/disabled/script/fact.check b/test/disabled/script/fact.check
deleted file mode 100644
index 22aa60821e..0000000000
--- a/test/disabled/script/fact.check
+++ /dev/null
@@ -1 +0,0 @@
-fact(5) = 120
diff --git a/test/disabled/script/fact.scala b/test/disabled/script/fact.scala
deleted file mode 100755
index d48dac6f0f..0000000000
--- a/test/disabled/script/fact.scala
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-# fact - A simple Scala script that prints out the factorial of
-# the argument specified on the command line.
-
-cygwin=false;
-case "`uname`" in
- CYGWIN*) cygwin=true ;;
-esac
-
-SOURCE="$0";
-if $cygwin; then
- if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then
- format=mixed
- else
- format=windows
- fi
- SOURCE=`cygpath --$format "$SOURCE"`;
-fi
-
-exec scala -nocompdaemon "$SOURCE" "$@"
-!#
-
-
-val x = argv(0).toInt
-
-def fact(x: Int):Int =
- if(x==0) 1
- else x*fact(x-1)
-
-Console.println("fact(" + x + ") = " + fact(x))
diff --git a/test/disabled/script/second.bat b/test/disabled/script/second.bat
deleted file mode 100755
index 222372d543..0000000000
--- a/test/disabled/script/second.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-@echo off
-
-scala -nocompdaemon -e "println(\"My second argument is \" + args(1))" arg1 arg2
diff --git a/test/disabled/script/second.check b/test/disabled/script/second.check
deleted file mode 100644
index a105b862a1..0000000000
--- a/test/disabled/script/second.check
+++ /dev/null
@@ -1 +0,0 @@
-My second argument is arg2
diff --git a/test/disabled/script/second.scala b/test/disabled/script/second.scala
deleted file mode 100755
index 48b8d73815..0000000000
--- a/test/disabled/script/second.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-scala -nocompdaemon -e 'println("My second argument is " + args(1))' arg1 arg2
diff --git a/test/disabled/script/t1015.bat b/test/disabled/script/t1015.bat
deleted file mode 100755
index 4eddc800a8..0000000000
--- a/test/disabled/script/t1015.bat
+++ /dev/null
@@ -1,12 +0,0 @@
-::#!
-:: t1015 - <description>.
-
-@echo off
-call scala -nocompdaemon %0 %*
-goto :eof
-::!#
-
-case class Test(one : Int, two : Int)
-object Test{
- def apply(one : Int): Test = Test(one, 2);
-}
diff --git a/test/disabled/script/t1015.scala b/test/disabled/script/t1015.scala
deleted file mode 100755
index 52d67bd6cc..0000000000
--- a/test/disabled/script/t1015.scala
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-# fact - A simple Scala script that prints out the factorial of
-# the argument specified on the command line.
-
-cygwin=false;
-case "`uname`" in
- CYGWIN*) cygwin=true ;;
-esac
-
-SOURCE="$0";
-if $cygwin; then
- if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then
- format=mixed
- else
- format=windows
- fi
- SOURCE=`cygpath --$format "$SOURCE"`;
-fi
-
-exec scala -nocompdaemon "$SOURCE" "$@"
-!#
-
-case class Test(one : Int, two : Int)
-object Test{
- def apply(one : Int): Test = Test(one, 2);
-}
diff --git a/test/disabled/script/t1017.bat b/test/disabled/script/t1017.bat
deleted file mode 100755
index 0df49c663c..0000000000
--- a/test/disabled/script/t1017.bat
+++ /dev/null
@@ -1,15 +0,0 @@
-::#!
-::# t1017 - <description>.
-
-@echo off
-call scala -nocompdaemon %0 %*
-goto :eof
-::!#
-
-def foo = {
- bar
-}
-
-var x = 1
-
-def bar = 1
diff --git a/test/disabled/script/t1017.scala b/test/disabled/script/t1017.scala
deleted file mode 100755
index 2600f4f553..0000000000
--- a/test/disabled/script/t1017.scala
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-# fact - A simple Scala script that prints out the factorial of
-# the argument specified on the command line.
-
-cygwin=false;
-case "`uname`" in
- CYGWIN*) cygwin=true ;;
-esac
-
-SOURCE="$0";
-if $cygwin; then
- if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then
- format=mixed
- else
- format=windows
- fi
- SOURCE=`cygpath --$format "$SOURCE"`;
-fi
-
-exec scala -nocompdaemon "$SOURCE" "$@"
-!#
-
-def foo = {
- bar
-}
-
-var x = 1
-
-def bar = 1
diff --git a/test/files/neg/ambiguous-same.check b/test/files/neg/ambiguous-same.check
new file mode 100644
index 0000000000..58f4e60ece
--- /dev/null
+++ b/test/files/neg/ambiguous-same.check
@@ -0,0 +1,6 @@
+ambiguous-same.scala:13: error: reference to x is ambiguous;
+it is both defined in object X and imported subsequently by
+import X.x
+ x
+ ^
+one error found
diff --git a/test/files/neg/ambiguous-same.scala b/test/files/neg/ambiguous-same.scala
new file mode 100644
index 0000000000..50dba71f67
--- /dev/null
+++ b/test/files/neg/ambiguous-same.scala
@@ -0,0 +1,15 @@
+
+// When faced with ambiguities between imports,
+// an attempt is made to see if the imports intend
+// identical types.
+//
+// Here, no attempt is made to notice that x
+// names the same thing.
+//
+object X {
+ val x = 42
+ def f = {
+ import X.x
+ x
+ }
+}
diff --git a/test/files/neg/specification-scopes.check b/test/files/neg/specification-scopes.check
index ab986135e5..49cdbf9232 100644
--- a/test/files/neg/specification-scopes.check
+++ b/test/files/neg/specification-scopes.check
@@ -1,12 +1,12 @@
-P_2.scala:14: error: reference to x is ambiguous;
-it is both defined in object C and imported subsequently by
-import Q.X._
- println("L14: "+x) // reference to 'x' is ambiguous here
- ^
-P_2.scala:19: error: reference to y is ambiguous;
+P_2.scala:15: error: reference to x is ambiguous;
+it is both defined in value <local Y> and imported subsequently by
+import q.X._
+ println(s"L15: $x") // reference to `x' is ambiguous here
+ ^
+P_2.scala:21: error: reference to y is ambiguous;
it is imported twice in the same scope by
-import P.X._
+import p.X._
and import X.y
- println("L19: "+y) // reference to 'y' is ambiguous here
- ^
+ println(s"L21: $y") // reference to `y' is ambiguous here
+ ^
two errors found
diff --git a/test/files/neg/specification-scopes/P_1.scala b/test/files/neg/specification-scopes/P_1.scala
index 3b11f1167d..50c306fd67 100644
--- a/test/files/neg/specification-scopes/P_1.scala
+++ b/test/files/neg/specification-scopes/P_1.scala
@@ -1,6 +1,7 @@
-package P {
- object X { val x = 1; val y = 2; }
+package p {
+ object X { val x = 1; val y = 2 }
}
-package Q {
- object X { val x = true; val y = "" }
+
+package q {
+ object X { val x = true; val y = false }
}
diff --git a/test/files/neg/specification-scopes/P_2.scala b/test/files/neg/specification-scopes/P_2.scala
index d59f82e90d..856e58c6fb 100644
--- a/test/files/neg/specification-scopes/P_2.scala
+++ b/test/files/neg/specification-scopes/P_2.scala
@@ -1,21 +1,24 @@
-package P { // 'X' bound by package clause
- import Console._ // 'println' bound by wildcard import
- object A {
- println("L4: "+X) // 'X' refers to 'P.X' here
- object B {
- import Q._ // 'X' bound by wildcard import
- println("L7: "+X) // 'X' refers to 'Q.X' here
- import X._ // 'x' and 'y' bound by wildcard import
- println("L8: "+x) // 'x' refers to 'Q.X.x' here
- object C {
- val x = 3 // 'x' bound by local definition
- println("L12: "+x); // 'x' refers to constant '3' here
- { import Q.X._ // 'x' and 'y' bound by wildcard
- println("L14: "+x) // reference to 'x' is ambiguous here
- import X.y // 'y' bound by explicit import
- println("L16: "+y); // 'y' refers to 'Q.X.y' here
- { val x = "abc" // 'x' bound by local definition
- import P.X._ // 'x' and 'y' bound by wildcard
- println("L19: "+y) // reference to 'y' is ambiguous here
- println("L20: "+x) // 'x' refers to string ''abc'' here
+package p { // `X' bound by package clause
+import Console._ // `println' bound by wildcard import
+object Y {
+ println(s"L4: $X") // `X' refers to `p.X' here
+ locally {
+ import q._ // `X' bound by wildcard import
+ println(s"L7: $X") // `X' refers to `q.X' here
+ import X._ // `x' and `y' bound by wildcard import
+ println(s"L9: $x") // `x' refers to `q.X.x' here
+ locally {
+ val x = 3 // `x' bound by local definition
+ println(s"L12: $x") // `x' refers to constant `3' here
+ locally {
+ import q.X._ // `x' and `y' bound by wildcard import
+ println(s"L15: $x") // reference to `x' is ambiguous here
+ import X.y // `y' bound by explicit import
+ println(s"L17: $y") // `y' refers to `q.X.y' here
+ locally {
+ val x = "abc" // `x' bound by local definition
+ import p.X._ // `x' and `y' bound by wildcard import
+ println(s"L21: $y") // reference to `y' is ambiguous here
+ println(s"L22: $x") // `x' refers to string "abc" here
}}}}}}
+
diff --git a/test/files/neg/t2712.flags b/test/files/neg/t2712.flags
deleted file mode 100644
index 41565c7e32..0000000000
--- a/test/files/neg/t2712.flags
+++ /dev/null
@@ -1 +0,0 @@
--Ypartial-unification
diff --git a/test/files/neg/t5148.check b/test/files/neg/t5148.check
index 1f58c235ce..8c895d7b47 100644
--- a/test/files/neg/t5148.check
+++ b/test/files/neg/t5148.check
@@ -1,16 +1,13 @@
-error: missing or invalid dependency detected while loading class file 'Imports.class'.
-Could not access term memberHandlers in class scala.tools.nsc.interpreter.IMain,
-because it (or its dependencies) are missing. Check your build definition for
-missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
+t5148.scala:4: error: Symbol 'term scala.tools.nsc.interpreter.IMain.memberHandlers' is missing from the classpath.
+This symbol is required by 'method scala.tools.nsc.interpreter.Imports.allReqAndHandlers'.
+Make sure that term memberHandlers is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
A full rebuild may help if 'Imports.class' was compiled against an incompatible version of scala.tools.nsc.interpreter.IMain.
-error: missing or invalid dependency detected while loading class file 'Imports.class'.
-Could not access type Wrapper in class scala.tools.nsc.interpreter.IMain.Request,
-because it (or its dependencies) are missing. Check your build definition for
-missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
-A full rebuild may help if 'Imports.class' was compiled against an incompatible version of scala.tools.nsc.interpreter.IMain.Request.
-error: missing or invalid dependency detected while loading class file 'Imports.class'.
-Could not access type Request in class scala.tools.nsc.interpreter.IMain,
-because it (or its dependencies) are missing. Check your build definition for
-missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
-A full rebuild may help if 'Imports.class' was compiled against an incompatible version of scala.tools.nsc.interpreter.IMain.
-three errors found
+class IMain extends Imports
+ ^
+t5148.scala:4: error: Symbol 'type <none>.Request.Wrapper' is missing from the classpath.
+This symbol is required by 'value scala.tools.nsc.interpreter.Imports.wrapper'.
+Make sure that type Wrapper is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
+A full rebuild may help if 'Imports.class' was compiled against an incompatible version of <none>.Request.
+class IMain extends Imports
+ ^
+two errors found
diff --git a/test/files/neg/t6889.check b/test/files/neg/t6889.check
index a77e8a010c..c14c3b09c0 100644
--- a/test/files/neg/t6889.check
+++ b/test/files/neg/t6889.check
@@ -1,7 +1,10 @@
t6889.scala:16: error: the result type of an implicit conversion must be more specific than AnyRef
def f(x: Dingo): AnyRef = x // fail - no conversion to AnyRef
^
-t6889.scala:17: error: an expression of type Null is ineligible for implicit conversion
+t6889.scala:17: error: the result type of an implicit conversion must be more specific than Object
+ def f2(x: Dingo): Object = x // fail - no conversion to Object
+ ^
+t6889.scala:18: error: an expression of type Null is ineligible for implicit conversion
var x: Int = null // fail - no conversion from Null
^
-two errors found
+three errors found
diff --git a/test/files/neg/t6889.scala b/test/files/neg/t6889.scala
index ef1963669c..3fc235bf7e 100644
--- a/test/files/neg/t6889.scala
+++ b/test/files/neg/t6889.scala
@@ -14,5 +14,6 @@ object Test {
trait Dingo extends Any with bippy.Bippy[foo.unrelated.Unrelated]
def f(x: Dingo): AnyRef = x // fail - no conversion to AnyRef
+ def f2(x: Dingo): Object = x // fail - no conversion to Object
var x: Int = null // fail - no conversion from Null
}
diff --git a/test/files/neg/t7475d.check b/test/files/neg/t7475d.check
deleted file mode 100644
index 6bd1da0d44..0000000000
--- a/test/files/neg/t7475d.check
+++ /dev/null
@@ -1,7 +0,0 @@
-t7475d.scala:4: error: value priv is not a member of T.this.TT
- (??? : TT).priv
- ^
-t7475d.scala:10: error: value priv is not a member of U.this.UU
- (??? : UU).priv
- ^
-two errors found
diff --git a/test/files/neg/t8417.check b/test/files/neg/t8417.check
new file mode 100644
index 0000000000..6ec9e1d14d
--- /dev/null
+++ b/test/files/neg/t8417.check
@@ -0,0 +1,15 @@
+t8417.scala:5: warning: Adapting argument list by creating a 2-tuple: this may not be what you want.
+ signature: T.f(x: Any)(y: Any): String
+ given arguments: "hello", "world"
+ after adaptation: T.f(("hello", "world"): (String, String))
+ def g = f("hello", "world")("holy", "moly")
+ ^
+t8417.scala:5: warning: Adapting argument list by creating a 2-tuple: this may not be what you want.
+ signature: T.f(x: Any)(y: Any): String
+ given arguments: "holy", "moly"
+ after adaptation: T.f(("holy", "moly"): (String, String))
+ def g = f("hello", "world")("holy", "moly")
+ ^
+error: No warnings can be incurred under -Xfatal-warnings.
+two warnings found
+one error found
diff --git a/test/files/neg/t8417.flags b/test/files/neg/t8417.flags
new file mode 100644
index 0000000000..26b215ff2d
--- /dev/null
+++ b/test/files/neg/t8417.flags
@@ -0,0 +1 @@
+-Xfatal-warnings -Ywarn-adapted-args
diff --git a/test/files/neg/t8417.scala b/test/files/neg/t8417.scala
new file mode 100644
index 0000000000..fb6449c2d1
--- /dev/null
+++ b/test/files/neg/t8417.scala
@@ -0,0 +1,6 @@
+
+
+trait T {
+ def f(x: Any)(y: Any) = "" + x + y
+ def g = f("hello", "world")("holy", "moly")
+}
diff --git a/test/files/neg/userdefined_apply.check b/test/files/neg/userdefined_apply.check
new file mode 100644
index 0000000000..c8c8976f5f
--- /dev/null
+++ b/test/files/neg/userdefined_apply.check
@@ -0,0 +1,25 @@
+userdefined_apply.scala:3: error: overloaded method apply needs result type
+ private def apply(x: Int) = if (x > 0) new ClashOverloadNoSig(x) else apply("")
+ ^
+userdefined_apply.scala:14: error: overloaded method apply needs result type
+ private def apply(x: Int) = if (x > 0) ClashRecNoSig(1) else ???
+ ^
+userdefined_apply.scala:21: error: overloaded method apply needs result type
+ private def apply(x: Boolean) = if (x) NoClashNoSig(1) else ???
+ ^
+userdefined_apply.scala:28: error: overloaded method apply needs result type
+ private def apply(x: Boolean) = if (x) NoClashOverload(1) else apply("")
+ ^
+userdefined_apply.scala:45: error: recursive method apply needs result type
+case class NoClashNoSigPoly private(x: Int)
+ ^
+userdefined_apply.scala:39: error: NoClashNoSigPoly.type does not take parameters
+ def apply(x: T) = if (???) NoClashNoSigPoly(1) else ???
+ ^
+userdefined_apply.scala:57: error: recursive method apply needs result type
+case class ClashNoSigPoly private(x: Int)
+ ^
+userdefined_apply.scala:51: error: ClashNoSigPoly.type does not take parameters
+ def apply(x: T) = if (???) ClashNoSigPoly(1) else ???
+ ^
+8 errors found
diff --git a/test/files/neg/userdefined_apply.scala b/test/files/neg/userdefined_apply.scala
new file mode 100644
index 0000000000..0a0d960b39
--- /dev/null
+++ b/test/files/neg/userdefined_apply.scala
@@ -0,0 +1,57 @@
+object ClashOverloadNoSig {
+ // error: overloaded method apply needs result type
+ private def apply(x: Int) = if (x > 0) new ClashOverloadNoSig(x) else apply("")
+
+ def apply(x: String): ClashOverloadNoSig = ???
+}
+
+case class ClashOverloadNoSig private(x: Int)
+
+object ClashRecNoSig {
+ // TODO: status quo is that the error refers to an overloaded method, which is actually recursive
+ // (we should have unlinked the symbol in the `if(suppress)` part of `applyUnapplyMethodCompleter`)
+ // error: recursive method apply needs result type
+ private def apply(x: Int) = if (x > 0) ClashRecNoSig(1) else ???
+}
+
+case class ClashRecNoSig private(x: Int)
+
+object NoClashNoSig {
+ // error: overloaded method apply needs result type
+ private def apply(x: Boolean) = if (x) NoClashNoSig(1) else ???
+}
+
+case class NoClashNoSig private(x: Int)
+
+object NoClashOverload {
+ // error: overloaded method apply needs result type
+ private def apply(x: Boolean) = if (x) NoClashOverload(1) else apply("")
+
+ def apply(x: String): NoClashOverload = ???
+}
+
+case class NoClashOverload private(x: Int)
+
+
+class BaseNCNSP[T] {
+ // TODO: suppress the following error
+ // error: NoClashNoSigPoly.type does not take parameters
+ def apply(x: T) = if (???) NoClashNoSigPoly(1) else ???
+}
+
+object NoClashNoSigPoly extends BaseNCNSP[Boolean]
+// TODO: position error at definition of apply in superclass instead of on case clss
+// error: recursive method apply needs result type
+case class NoClashNoSigPoly private(x: Int)
+
+
+class BaseCNSP[T] {
+ // TODO: suppress the following error
+ // error: ClashNoSigPoly.type does not take parameters
+ def apply(x: T) = if (???) ClashNoSigPoly(1) else ???
+}
+
+object ClashNoSigPoly extends BaseCNSP[Int]
+// TODO: position error at definition of apply in superclass instead of on case clss
+// error: recursive method apply needs result type
+case class ClashNoSigPoly private(x: Int)
diff --git a/test/files/pos/t10206.scala b/test/files/pos/t10206.scala
new file mode 100644
index 0000000000..3ddd1ea2fd
--- /dev/null
+++ b/test/files/pos/t10206.scala
@@ -0,0 +1,15 @@
+class Foo(val bar: String)
+
+object Foo {
+ implicit class Enrich(foo: Foo) {
+ def clone(x: Int, y: Int): Int = x + y
+ }
+}
+
+object Main extends App {
+ val foo = new Foo("hello")
+ println(foo.clone(1, 2)) // <- does not compile
+ // the implicit view was being disqualified because a new check in the compiler
+ // that implicit views must not target Any or AnyRef considered an implicit search
+ // for `foo.type => ?{def clone: ?}` to targeted AnyRef.
+}
diff --git a/test/files/pos/userdefined_apply.scala b/test/files/pos/userdefined_apply.scala
new file mode 100644
index 0000000000..e29f9f5141
--- /dev/null
+++ b/test/files/pos/userdefined_apply.scala
@@ -0,0 +1,54 @@
+// NOTE: the companion inherits a public apply method from Function1!
+case class NeedsCompanion private (x: Int)
+
+object ClashNoSig { // ok
+ private def apply(x: Int) = if (x > 0) new ClashNoSig(x) else ???
+}
+case class ClashNoSig private (x: Int)
+
+
+object Clash {
+ private def apply(x: Int) = if (x > 0) new Clash(x) else ???
+}
+case class Clash private (x: Int)
+
+object ClashSig {
+ private def apply(x: Int): ClashSig = if (x > 0) new ClashSig(x) else ???
+}
+case class ClashSig private (x: Int)
+
+object ClashOverload {
+ private def apply(x: Int): ClashOverload = if (x > 0) new ClashOverload(x) else apply("")
+ def apply(x: String): ClashOverload = ???
+}
+case class ClashOverload private (x: Int)
+
+object NoClashSig {
+ private def apply(x: Boolean): NoClashSig = if (x) NoClashSig(1) else ???
+}
+case class NoClashSig private (x: Int)
+
+object NoClashOverload {
+ // needs full sig
+ private def apply(x: Boolean): NoClashOverload = if (x) NoClashOverload(1) else apply("")
+ def apply(x: String): NoClashOverload = ???
+}
+case class NoClashOverload private (x: Int)
+
+
+
+class BaseNCP[T] {
+ // error: overloaded method apply needs result type
+ def apply(x: T): NoClashPoly = if (???) NoClashPoly(1) else ???
+}
+
+object NoClashPoly extends BaseNCP[Boolean]
+case class NoClashPoly private(x: Int)
+
+
+class BaseCP[T] {
+ // error: overloaded method apply needs result type
+ def apply(x: T): ClashPoly = if (???) ClashPoly(1) else ???
+}
+object ClashPoly extends BaseCP[Int]
+case class ClashPoly private(x: Int)
diff --git a/test/files/pos/userdefined_apply_poly_overload.scala b/test/files/pos/userdefined_apply_poly_overload.scala
new file mode 100644
index 0000000000..6760c1424f
--- /dev/null
+++ b/test/files/pos/userdefined_apply_poly_overload.scala
@@ -0,0 +1,13 @@
+object Foo {
+ // spurious error if:
+ // - this definition precedes that of apply (which is overloaded with the synthetic one derived from the case class)
+ // - AND `Foo.apply` is explicitly applied to `[A]` (no error if `[A]` is inferred)
+ //
+ def referToPolyOverloadedApply[A]: Foo[A] = Foo.apply[A]("bla")
+ // ^
+ // found : String("bla")
+ // required: Int
+
+ def apply[A](x: Int): Foo[A] = ???
+}
+case class Foo[A](x: String) // must be polymorphic
diff --git a/test/files/run/StubErrorBInheritsFromA.check b/test/files/run/StubErrorBInheritsFromA.check
new file mode 100644
index 0000000000..009f0887d4
--- /dev/null
+++ b/test/files/run/StubErrorBInheritsFromA.check
@@ -0,0 +1,6 @@
+error: newSource1.scala:4: Symbol 'type stuberrors.A' is missing from the classpath.
+This symbol is required by 'class stuberrors.B'.
+Make sure that type A is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
+A full rebuild may help if 'B.class' was compiled against an incompatible version of stuberrors.
+ new B
+ ^
diff --git a/test/files/run/StubErrorBInheritsFromA.scala b/test/files/run/StubErrorBInheritsFromA.scala
new file mode 100644
index 0000000000..3e02692171
--- /dev/null
+++ b/test/files/run/StubErrorBInheritsFromA.scala
@@ -0,0 +1,22 @@
+object Test extends scala.tools.partest.StubErrorMessageTest {
+ def codeA = """
+ package stuberrors
+ class A
+ """
+
+ def codeB = """
+ package stuberrors
+ class B extends A
+ """
+
+ def userCode = """
+ package stuberrors
+ class C {
+ new B
+ }
+ """
+
+ def removeFromClasspath(): Unit = {
+ removeClasses("stuberrors", List("A"))
+ }
+}
diff --git a/test/files/run/StubErrorComplexInnerClass.check b/test/files/run/StubErrorComplexInnerClass.check
new file mode 100644
index 0000000000..fe089de8ad
--- /dev/null
+++ b/test/files/run/StubErrorComplexInnerClass.check
@@ -0,0 +1,6 @@
+error: newSource1.scala:9: Symbol 'type stuberrors.A' is missing from the classpath.
+This symbol is required by 'class stuberrors.B.BB'.
+Make sure that type A is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
+A full rebuild may help if 'B.class' was compiled against an incompatible version of stuberrors.
+ new b.BB
+ ^
diff --git a/test/files/run/StubErrorComplexInnerClass.scala b/test/files/run/StubErrorComplexInnerClass.scala
new file mode 100644
index 0000000000..2028644601
--- /dev/null
+++ b/test/files/run/StubErrorComplexInnerClass.scala
@@ -0,0 +1,42 @@
+object Test extends scala.tools.partest.StubErrorMessageTest {
+ def codeA = """
+ package stuberrors
+ class A
+ """
+
+ def codeB = """
+ package stuberrors
+ class B {
+ def foo: String = ???
+
+ // unused and should fail, but not loaded
+ def unsafeFoo: A = ???
+ // used, B.info -> BB.info -> unpickling A -> stub error
+ class BB extends A
+ }
+ """
+
+ def userCode = """
+ package stuberrors
+ class C {
+ def aloha = {
+ val b = new B
+ val d = new extra.D
+ d.foo
+ println(b.foo)
+ new b.BB
+ }
+ }
+ """
+
+ override def extraUserCode = """
+ package extra
+ class D {
+ def foo = "Hello, World"
+ }
+ """.stripMargin
+
+ def removeFromClasspath(): Unit = {
+ removeClasses("stuberrors", List("A"))
+ }
+}
diff --git a/test/files/run/StubErrorHK.check b/test/files/run/StubErrorHK.check
new file mode 100644
index 0000000000..6f37f8ea41
--- /dev/null
+++ b/test/files/run/StubErrorHK.check
@@ -0,0 +1,6 @@
+error: newSource1.scala:4: Symbol 'type stuberrors.A' is missing from the classpath.
+This symbol is required by 'type stuberrors.B.D'.
+Make sure that type A is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
+A full rebuild may help if 'B.class' was compiled against an incompatible version of stuberrors.
+ println(new B)
+ ^
diff --git a/test/files/run/StubErrorHK.scala b/test/files/run/StubErrorHK.scala
new file mode 100644
index 0000000000..7ee8c6d6a5
--- /dev/null
+++ b/test/files/run/StubErrorHK.scala
@@ -0,0 +1,22 @@
+object Test extends scala.tools.partest.StubErrorMessageTest {
+ def codeA = """
+ package stuberrors
+ class A
+ """
+
+ def codeB = """
+ package stuberrors
+ class B[D <: A]
+ """
+
+ def userCode = """
+ package stuberrors
+ object C extends App {
+ println(new B)
+ }
+ """
+
+ def removeFromClasspath(): Unit = {
+ removeClasses("stuberrors", List("A"))
+ }
+}
diff --git a/test/files/run/StubErrorReturnTypeFunction.check b/test/files/run/StubErrorReturnTypeFunction.check
new file mode 100644
index 0000000000..bd61d5f5fa
--- /dev/null
+++ b/test/files/run/StubErrorReturnTypeFunction.check
@@ -0,0 +1,6 @@
+error: newSource1.scala:13: Symbol 'type stuberrors.A' is missing from the classpath.
+This symbol is required by 'method stuberrors.B.foo'.
+Make sure that type A is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
+A full rebuild may help if 'B.class' was compiled against an incompatible version of stuberrors.
+ b.foo
+ ^
diff --git a/test/files/run/StubErrorReturnTypeFunction.scala b/test/files/run/StubErrorReturnTypeFunction.scala
new file mode 100644
index 0000000000..75a02cff63
--- /dev/null
+++ b/test/files/run/StubErrorReturnTypeFunction.scala
@@ -0,0 +1,37 @@
+object Test extends scala.tools.partest.StubErrorMessageTest {
+ def codeA = """
+ package stuberrors
+ class A
+ class AA
+ """
+
+ def codeB = """
+ package stuberrors
+
+ abstract class B {
+ def bar: String = ???
+ def foo: A = new A
+ def baz: String = ???
+ }
+ """
+
+ def userCode = """
+ package stuberrors
+
+ abstract class C extends App {
+ val b = new B {}
+
+ // Use other symbols in the meanwhile
+ val aa = new AA
+ val dummy = 1
+ println(dummy)
+
+ // Should blow up
+ b.foo
+ }
+ """
+
+ def removeFromClasspath(): Unit = {
+ removeClasses("stuberrors", List("A"))
+ }
+}
diff --git a/test/files/run/StubErrorReturnTypeFunction2.check b/test/files/run/StubErrorReturnTypeFunction2.check
new file mode 100644
index 0000000000..bd61d5f5fa
--- /dev/null
+++ b/test/files/run/StubErrorReturnTypeFunction2.check
@@ -0,0 +1,6 @@
+error: newSource1.scala:13: Symbol 'type stuberrors.A' is missing from the classpath.
+This symbol is required by 'method stuberrors.B.foo'.
+Make sure that type A is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
+A full rebuild may help if 'B.class' was compiled against an incompatible version of stuberrors.
+ b.foo
+ ^
diff --git a/test/files/run/StubErrorReturnTypeFunction2.scala b/test/files/run/StubErrorReturnTypeFunction2.scala
new file mode 100644
index 0000000000..efb2f4f190
--- /dev/null
+++ b/test/files/run/StubErrorReturnTypeFunction2.scala
@@ -0,0 +1,37 @@
+object Test extends scala.tools.partest.StubErrorMessageTest {
+ def codeA = """
+ package stuberrors
+ class A
+ class AA
+ """
+
+ def codeB = """
+ package stuberrors
+
+ class B {
+ def bar: String = ???
+ def foo: A = new A
+ def baz: String = ???
+ }
+ """
+
+ def userCode = """
+ package stuberrors
+
+ abstract class C extends App {
+ val b = new B {}
+
+ // Use other symbols in the meanwhile
+ val aa = new AA
+ val dummy = 1
+ println(dummy)
+
+ // Should blow up
+ b.foo
+ }
+ """
+
+ def removeFromClasspath(): Unit = {
+ removeClasses("stuberrors", List("A"))
+ }
+}
diff --git a/test/files/run/StubErrorReturnTypePolyFunction.check b/test/files/run/StubErrorReturnTypePolyFunction.check
new file mode 100644
index 0000000000..78e309668e
--- /dev/null
+++ b/test/files/run/StubErrorReturnTypePolyFunction.check
@@ -0,0 +1,15 @@
+error: newSource1.scala:13: Symbol 'type stuberrors.A' is missing from the classpath.
+This symbol is required by 'class stuberrors.D'.
+Make sure that type A is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
+A full rebuild may help if 'D.class' was compiled against an incompatible version of stuberrors.
+ b.foo[D]
+ ^
+error: newSource1.scala:13: type arguments [stuberrors.D] do not conform to method foo's type parameter bounds [T <: stuberrors.A]
+ b.foo[D]
+ ^
+error: newSource1.scala:13: Symbol 'type stuberrors.A' is missing from the classpath.
+This symbol is required by 'type stuberrors.B.T'.
+Make sure that type A is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
+A full rebuild may help if 'B.class' was compiled against an incompatible version of stuberrors.
+ b.foo[D]
+ ^
diff --git a/test/files/run/StubErrorReturnTypePolyFunction.scala b/test/files/run/StubErrorReturnTypePolyFunction.scala
new file mode 100644
index 0000000000..8345aaade0
--- /dev/null
+++ b/test/files/run/StubErrorReturnTypePolyFunction.scala
@@ -0,0 +1,37 @@
+object Test extends scala.tools.partest.StubErrorMessageTest {
+ def codeA = """
+ package stuberrors
+ class A
+ class AA
+ """
+
+ def codeB = """
+ package stuberrors
+
+ class B {
+ def foo[T <: A]: T = ???
+ }
+
+ class D extends A
+ """
+
+ def userCode = """
+ package stuberrors
+
+ abstract class C extends App {
+ val b = new B
+
+ // Use other symbols in the meanwhile
+ val aa = new AA
+ val dummy = 1
+ println(dummy)
+
+ // Should blow up
+ b.foo[D]
+ }
+ """
+
+ def removeFromClasspath(): Unit = {
+ removeClasses("stuberrors", List("A"))
+ }
+}
diff --git a/test/files/run/StubErrorSubclasses.check b/test/files/run/StubErrorSubclasses.check
new file mode 100644
index 0000000000..8ccd781cad
--- /dev/null
+++ b/test/files/run/StubErrorSubclasses.check
@@ -0,0 +1,6 @@
+error: newSource1.scala:3: Symbol 'type stuberrors.A' is missing from the classpath.
+This symbol is required by 'class stuberrors.B'.
+Make sure that type A is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
+A full rebuild may help if 'B.class' was compiled against an incompatible version of stuberrors.
+ class C extends B
+ ^
diff --git a/test/files/run/StubErrorSubclasses.scala b/test/files/run/StubErrorSubclasses.scala
new file mode 100644
index 0000000000..b19155e20e
--- /dev/null
+++ b/test/files/run/StubErrorSubclasses.scala
@@ -0,0 +1,21 @@
+object Test extends scala.tools.partest.StubErrorMessageTest {
+ def codeA = """
+ package stuberrors
+ class A
+ """
+
+ def codeB = """
+ package stuberrors
+ class B extends A
+ """
+
+ def userCode = """
+ package stuberrors
+ class C extends B
+ """
+
+ def removeFromClasspath(): Unit = {
+ removeClasses("stuberrors", List("A"))
+ }
+}
+
diff --git a/test/files/run/StubErrorTypeDef.check b/test/files/run/StubErrorTypeDef.check
new file mode 100644
index 0000000000..955d9b0880
--- /dev/null
+++ b/test/files/run/StubErrorTypeDef.check
@@ -0,0 +1,16 @@
+error: newSource1.scala:4: overriding type D in class B with bounds <: stuberrors.A;
+ type D has incompatible type
+ new B { type D = E }
+ ^
+error: newSource1.scala:4: Symbol 'type stuberrors.A' is missing from the classpath.
+This symbol is required by 'type stuberrors.B.D'.
+Make sure that type A is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
+A full rebuild may help if 'B.class' was compiled against an incompatible version of stuberrors.
+ new B { type D = E }
+ ^
+error: newSource1.scala:4: Symbol 'type stuberrors.A' is missing from the classpath.
+This symbol is required by 'class stuberrors.E'.
+Make sure that type A is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
+A full rebuild may help if 'E.class' was compiled against an incompatible version of stuberrors.
+ new B { type D = E }
+ ^
diff --git a/test/files/run/StubErrorTypeDef.scala b/test/files/run/StubErrorTypeDef.scala
new file mode 100644
index 0000000000..967964d815
--- /dev/null
+++ b/test/files/run/StubErrorTypeDef.scala
@@ -0,0 +1,26 @@
+object Test extends scala.tools.partest.StubErrorMessageTest {
+ def codeA = """
+ package stuberrors
+ class A
+ class NestedB[T]
+ """
+
+ def codeB = """
+ package stuberrors
+ class E extends A
+ abstract class B {
+ type D <: A
+ }
+ """
+
+ def userCode = """
+ package stuberrors
+ class C {
+ new B { type D = E }
+ }
+ """
+
+ def removeFromClasspath(): Unit = {
+ removeClasses("stuberrors", List("A"))
+ }
+}
diff --git a/test/files/run/StubErrorTypeclass.check b/test/files/run/StubErrorTypeclass.check
new file mode 100644
index 0000000000..7ecee64ec9
--- /dev/null
+++ b/test/files/run/StubErrorTypeclass.check
@@ -0,0 +1,6 @@
+error: newSource1.scala:4: Symbol 'type stuberrors.A' is missing from the classpath.
+This symbol is required by 'value stuberrors.B.evidence$1'.
+Make sure that type A is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
+A full rebuild may help if 'B.class' was compiled against an incompatible version of stuberrors.
+ class C { println(new B(1)) }
+ ^
diff --git a/test/files/run/StubErrorTypeclass.scala b/test/files/run/StubErrorTypeclass.scala
new file mode 100644
index 0000000000..e9a48d5430
--- /dev/null
+++ b/test/files/run/StubErrorTypeclass.scala
@@ -0,0 +1,21 @@
+object Test extends scala.tools.partest.StubErrorMessageTest {
+ def codeA = """
+ package stuberrors
+ class A[T]
+ """
+
+ def codeB = """
+ package stuberrors
+ class B[T: A](val t: T)
+ """
+
+ def userCode = """
+ package stuberrors
+ // Here we want a stub error not an implicit not found error
+ class C { println(new B(1)) }
+ """
+
+ def removeFromClasspath(): Unit = {
+ removeClasses("stuberrors", List("A"))
+ }
+}
diff --git a/test/files/run/reflection-attachments.check b/test/files/run/reflection-attachments.check
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/files/run/reflection-attachments.check
+++ /dev/null
diff --git a/test/files/run/repl-colon-type.check b/test/files/run/repl-colon-type.check
index 5b7a3c7506..1217e8d8c2 100644
--- a/test/files/run/repl-colon-type.check
+++ b/test/files/run/repl-colon-type.check
@@ -75,7 +75,7 @@ TypeRef(
)
TypeRef(
TypeSymbol(
- sealed abstract class List[+A] extends AbstractSeq[A] with LinearSeq[A] with Product with GenericTraversableTemplate[A,List] with LinearSeqOptimized[A,List[A]] with FilteredTraversableInternal[A,List[A]] with Serializable
+ sealed abstract class List[+A] extends AbstractSeq[A] with LinearSeq[A] with Product with GenericTraversableTemplate[A,List] with LinearSeqOptimized[A,List[A]] with Serializable
)
args = List(
@@ -142,7 +142,7 @@ TypeRef(
args = List(
TypeRef(
TypeSymbol(
- sealed abstract class List[+A] extends AbstractSeq[A] with LinearSeq[A] with Product with GenericTraversableTemplate[A,List] with LinearSeqOptimized[A,List[A]] with FilteredTraversableInternal[A,List[A]] with Serializable
+ sealed abstract class List[+A] extends AbstractSeq[A] with LinearSeq[A] with Product with GenericTraversableTemplate[A,List] with LinearSeqOptimized[A,List[A]] with Serializable
)
args = List(
@@ -175,7 +175,7 @@ PolyType(
args = List(
TypeRef(
TypeSymbol(
- sealed abstract class List[+A] extends AbstractSeq[A] with LinearSeq[A] with Product with GenericTraversableTemplate[A,List] with LinearSeqOptimized[A,List[A]] with FilteredTraversableInternal[A,List[A]] with Serializable
+ sealed abstract class List[+A] extends AbstractSeq[A] with LinearSeq[A] with Product with GenericTraversableTemplate[A,List] with LinearSeqOptimized[A,List[A]] with Serializable
)
args = List(TypeParamTypeRef(TypeParam(T <: AnyVal)))
@@ -198,7 +198,7 @@ PolyType(
params = List(TermSymbol(x: T), TermSymbol(y: List[U]))
resultType = TypeRef(
TypeSymbol(
- sealed abstract class List[+A] extends AbstractSeq[A] with LinearSeq[A] with Product with GenericTraversableTemplate[A,List] with LinearSeqOptimized[A,List[A]] with FilteredTraversableInternal[A,List[A]] with Serializable
+ sealed abstract class List[+A] extends AbstractSeq[A] with LinearSeq[A] with Product with GenericTraversableTemplate[A,List] with LinearSeqOptimized[A,List[A]] with Serializable
)
args = List(TypeParamTypeRef(TypeParam(U >: T)))
diff --git a/test/files/run/t10231/A_1.java b/test/files/run/t10231/A_1.java
new file mode 100644
index 0000000000..5cc2ed3606
--- /dev/null
+++ b/test/files/run/t10231/A_1.java
@@ -0,0 +1,11 @@
+/*
+ * javac: -parameters
+ */
+public class A_1 {
+ public class Inner {
+ public int x;
+ public Inner(int i) {
+ x = i;
+ }
+ }
+}
diff --git a/test/files/run/t10231/Test_2.scala b/test/files/run/t10231/Test_2.scala
new file mode 100644
index 0000000000..8f8150cab1
--- /dev/null
+++ b/test/files/run/t10231/Test_2.scala
@@ -0,0 +1,5 @@
+object Test extends App {
+ val a = new A_1
+ val i = new a.Inner(i = 99)
+ assert(i.x == 99)
+}
diff --git a/test/files/run/t5717.check b/test/files/run/t5717.check
new file mode 100644
index 0000000000..5001b57ffc
--- /dev/null
+++ b/test/files/run/t5717.check
@@ -0,0 +1 @@
+error: error writing a/B: t5717-run.obj/a/B.class: t5717-run.obj/a is not a directory
diff --git a/test/files/run/t5717.scala b/test/files/run/t5717.scala
index a0997f5a49..1434f40a6a 100644
--- a/test/files/run/t5717.scala
+++ b/test/files/run/t5717.scala
@@ -1,7 +1,7 @@
import scala.tools.partest._
import java.io.File
-object Test extends StoreReporterDirectTest {
+object Test extends DirectTest {
def code = ???
def compileCode(code: String) = {
diff --git a/test/files/run/t6440b.check b/test/files/run/t6440b.check
index a6100d6d1e..07ec4f2a19 100644
--- a/test/files/run/t6440b.check
+++ b/test/files/run/t6440b.check
@@ -1,5 +1,6 @@
-pos: NoPosition missing or invalid dependency detected while loading class file 'U.class'.
-Could not access type T in package pack1,
-because it (or its dependencies) are missing. Check your build definition for
-missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
-A full rebuild may help if 'U.class' was compiled against an incompatible version of pack1. ERROR
+error: newSource1.scala:4: Symbol 'type pack1.T' is missing from the classpath.
+This symbol is required by 'method pack1.U.t'.
+Make sure that type T is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
+A full rebuild may help if 'U.class' was compiled against an incompatible version of pack1.
+ pack2.V.u.t // we have to fail if T.class is missing
+ ^
diff --git a/test/files/run/t6440b.scala b/test/files/run/t6440b.scala
index 7ab9529ccb..a1ad717162 100644
--- a/test/files/run/t6440b.scala
+++ b/test/files/run/t6440b.scala
@@ -56,6 +56,10 @@ object Test extends StoreReporterDirectTest {
// bad symbolic reference error expected (but no stack trace!)
compileCode(app2)
- println(filteredInfos.mkString("\n"))
+ import scala.reflect.internal.util.Position
+ filteredInfos.map { report =>
+ print(if (report.severity == storeReporter.ERROR) "error: " else "")
+ println(Position.formatMessage(report.pos, report.msg, true))
+ }
}
}
diff --git a/test/files/run/typetags_without_scala_reflect_typetag_lookup.scala b/test/files/run/typetags_without_scala_reflect_typetag_lookup.scala
index 3d2b9f77be..dccb2af8f5 100644
--- a/test/files/run/typetags_without_scala_reflect_typetag_lookup.scala
+++ b/test/files/run/typetags_without_scala_reflect_typetag_lookup.scala
@@ -38,6 +38,6 @@ object Test extends StoreReporterDirectTest {
compileApp();
// we should get "missing or invalid dependency detected" errors, because we're trying to use an implicit that can't be unpickled
// but we don't know the number of these errors and their order, so I just ignore them all
- println(filteredInfos.filterNot(_.msg.contains("missing or invalid dependency detected")).mkString("\n"))
+ println(filteredInfos.filterNot(_.msg.contains("is missing from the classpath")).mkString("\n"))
}
}
diff --git a/test/files/run/typetags_without_scala_reflect_typetag_manifest_interop.scala b/test/files/run/typetags_without_scala_reflect_typetag_manifest_interop.scala
index a865f4d137..c865759588 100644
--- a/test/files/run/typetags_without_scala_reflect_typetag_manifest_interop.scala
+++ b/test/files/run/typetags_without_scala_reflect_typetag_manifest_interop.scala
@@ -42,6 +42,6 @@ object Test extends StoreReporterDirectTest {
compileApp();
// we should get "missing or invalid dependency detected" errors, because we're trying to use an implicit that can't be unpickled
// but we don't know the number of these errors and their order, so I just ignore them all
- println(filteredInfos.filterNot (_.msg.contains("missing or invalid dependency detected")).mkString("\n"))
+ println(filteredInfos.filterNot (_.msg.contains("is missing from the classpath")).mkString("\n"))
}
}
diff --git a/test/flaky/pos/t2868/Jann.java b/test/flaky/pos/t2868/Jann.java
deleted file mode 100644
index f5b68de7b0..0000000000
--- a/test/flaky/pos/t2868/Jann.java
+++ /dev/null
@@ -1,5 +0,0 @@
-public @interface Jann {
- public String str();
- public Nest inn();
- public int[] arr();
-}
diff --git a/test/flaky/pos/t2868/Nest.java b/test/flaky/pos/t2868/Nest.java
deleted file mode 100644
index 53652291ad..0000000000
--- a/test/flaky/pos/t2868/Nest.java
+++ /dev/null
@@ -1,3 +0,0 @@
-public @interface Nest {
- public int value();
-}
diff --git a/test/flaky/pos/t2868/pick_1.scala b/test/flaky/pos/t2868/pick_1.scala
deleted file mode 100644
index a211687432..0000000000
--- a/test/flaky/pos/t2868/pick_1.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-class ann(s: String) extends annotation.StaticAnnotation
-class pick {
- final val s = "bang!"
- @ann("bang!") def foo = 1
- @Jann(str = "bang!", inn = new Nest(1), arr = Array(1, 2)) def bar = 2
- @Jann(str = "bang!", inn = new Nest(1), arr = Array(1, 2)) def baz = 3
-}
diff --git a/test/flaky/pos/t2868/t2868_src_2.scala b/test/flaky/pos/t2868/t2868_src_2.scala
deleted file mode 100644
index f11ef0fae2..0000000000
--- a/test/flaky/pos/t2868/t2868_src_2.scala
+++ /dev/null
@@ -1,6 +0,0 @@
-class test {
- val l = (new pick).s
- val u = (new pick).foo
- val c = (new pick).bar
- val k = (new pick).baz
-}
diff --git a/test/junit/scala/tools/nsc/typechecker/Implicits.scala b/test/junit/scala/tools/nsc/typechecker/Implicits.scala
new file mode 100644
index 0000000000..75f4e70827
--- /dev/null
+++ b/test/junit/scala/tools/nsc/typechecker/Implicits.scala
@@ -0,0 +1,39 @@
+package scala.tools.nsc
+package typechecker
+
+import org.junit.Assert._
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+import scala.tools.testing.BytecodeTesting
+
+@RunWith(classOf[JUnit4])
+class ImplicitsTests extends BytecodeTesting {
+ import compiler.global._, definitions._, analyzer._
+
+ @Test
+ def implicitInfoHashCode(): Unit = {
+ val run = new global.Run
+
+ enteringPhase(run.typerPhase) {
+ val T0 = IntClass.tpeHK
+ val T1 = refinedType(List(T0), NoSymbol)
+
+ assert(T0 =:= T1)
+ assert(T0 != T1)
+ assert(T0.hashCode != T1.hashCode)
+
+ val I0 = new ImplicitInfo(TermName("dummy"), T0, NoSymbol)
+ val I1 = new ImplicitInfo(TermName("dummy"), T1, NoSymbol)
+
+ assert(I0 == I1)
+ assert(I0.hashCode == I1.hashCode)
+
+ val pHash = (TermName("dummy"), NoSymbol).hashCode
+
+ assert(I0.hashCode == pHash)
+ assert(I1.hashCode == pHash)
+ }
+ }
+}
diff --git a/test/pending/buildmanager/t2443/BitSet.scala b/test/pending/buildmanager/t2443/BitSet.scala
deleted file mode 100644
index 8d7c8dcd23..0000000000
--- a/test/pending/buildmanager/t2443/BitSet.scala
+++ /dev/null
@@ -1,2 +0,0 @@
-import scala.collection.BitSet
-//class BitSet
diff --git a/test/pending/buildmanager/t2443/t2443.changes/BitSet2.scala b/test/pending/buildmanager/t2443/t2443.changes/BitSet2.scala
deleted file mode 100644
index 27a5d4de9f..0000000000
--- a/test/pending/buildmanager/t2443/t2443.changes/BitSet2.scala
+++ /dev/null
@@ -1 +0,0 @@
-import scala.collection.BitSet
diff --git a/test/pending/buildmanager/t2443/t2443.check b/test/pending/buildmanager/t2443/t2443.check
deleted file mode 100644
index dd88e1ceb9..0000000000
--- a/test/pending/buildmanager/t2443/t2443.check
+++ /dev/null
@@ -1,6 +0,0 @@
-builder > BitSet.scala
-compiling Set(BitSet.scala)
-builder > BitSet.scala
-Changes: Map(class BitSet -> List(Removed(Class(BitSet))))
-
-
diff --git a/test/pending/buildmanager/t2443/t2443.test b/test/pending/buildmanager/t2443/t2443.test
deleted file mode 100644
index a1d61ff5a3..0000000000
--- a/test/pending/buildmanager/t2443/t2443.test
+++ /dev/null
@@ -1,3 +0,0 @@
->>compile BitSet.scala
->>update BitSet.scala=>BitSet2.scala
->>compile BitSet.scala
diff --git a/test/pending/jvm/cf-attributes.check b/test/pending/jvm/cf-attributes.check
deleted file mode 100644
index 018febb81b..0000000000
--- a/test/pending/jvm/cf-attributes.check
+++ /dev/null
@@ -1,50 +0,0 @@
-
-{{ anonymousFunctions$ }}
-
-{{ anonymousFunctions$bar$ }}
- public final class anonymousFunctions$bar$$anonfun$4 of class anonymousFunctions$bar$
-anonymousClasses$$anon$1
-
-{{ anonymousClasses$ }}
-
-[[ anonymousFunctions$ ]]
- InnerClass:
- public final #66 of #90; //class anonymousFunctions$$anonfun$1 of class anonymousFunctions
- public final #77; //class anonymousFunctions$$anonfun$2
- public final #24; //class anonymousFunctions$$anonfun$3
- public final #49; //class anonymousFunctions$$anonfun$foo$1
-
-
-[[ anonymousFunctions$bar$ ]]
- InnerClass:
- public final #28 of #9; //class anonymousFunctions$bar$$anonfun$4 of class anonymousFunctions$bar$
- public final #52; //class anonymousFunctions$bar$$anonfun$5
-
-
-[[ anonymousClasses$ ]]
- InnerClass:
- public abstract #33= #30 of #32; //Foo=class anonymousClasses$Foo of class anonymousClasses
- public final #25 of #32; //class anonymousClasses$$anon$1 of class anonymousClasses
- public abstract #36= #35 of #32; //Foo$class=class anonymousClasses$Foo$class of class anonymousClasses
-
-
-[[ anonymousFunctions$$anonfun$3 ]]
- InnerClass:
- public final #8; //class anonymousFunctions$$anonfun$3
-
-
-[[ anonymousFunctions$$anonfun$foo$1 ]]
- InnerClass:
- public final #8; //class anonymousFunctions$$anonfun$foo$1
-
-
-[[ anonymousFunctions$bar$$anonfun$4 ]]
- InnerClass:
- public final #8 of #41; //class anonymousFunctions$bar$$anonfun$4 of class anonymousFunctions$bar$
-
-
-[[ anonymousClasses$$anon$1 ]]
- InnerClass:
- public abstract #46= #43 of #45; //Foo=class anonymousClasses$Foo of class anonymousClasses
- public final #48 of #45; //class anonymousClasses$$anon$1 of class anonymousClasses
-
diff --git a/test/pending/jvm/cf-attributes.scala b/test/pending/jvm/cf-attributes.scala
deleted file mode 100644
index 2d08f22d8b..0000000000
--- a/test/pending/jvm/cf-attributes.scala
+++ /dev/null
@@ -1,146 +0,0 @@
-object Test extends Application {
- InnerClassTest1
- InnerClassTest2
-}
-
-object InnerClassTest1 extends Test1 {
- printClass(anonymousFunctions.getClass)
- printClass(anonymousFunctions.bar.getClass)
- println(anonymousClasses.x) // see run/t1167.scala
- printClass(anonymousClasses.getClass)
-}
-
-object InnerClassTest2 extends Test2 {
- printClass(anonymousFunctions.getClass)
- printClass(anonymousFunctions.bar.getClass)
- printClass(anonymousClasses.getClass)
- // not accessible via the Java reflection API
- printClass("anonymousFunctions$$anonfun$3")
- printClass("anonymousFunctions$$anonfun$foo$1")
- printClass("anonymousFunctions$bar$$anonfun$4")
- printClass("anonymousClasses$$anon$1")
-}
-
-object anonymousFunctions {
- //InnerClass:
- // public final #_ of #_; //class anonymousFunctions$$anonfun$1 of class InnerClass$
- val twice = (x: Int) => 2*x
-
- //InnerClass:
- // public final #_ of #_; //class anonymousFunctions$$anonfun$2
- List(0).map(x => x+1)
-
- def foo {
- //InnerClass:
- // public final #_ of #_; class anonymousFunctions$$anonfun$3
- val square = (x: Int) => x*x
-
- //InnerClass:
- // public final #_ of #_; class anonymousFunctions$$anonfun$foo$1
- Array(1).filter(_ % 2 == 0)
- }
-
- object bar {
- //InnerClass:
- // public final #_ of #_; class anonymousFunctions$bar$$anonfun$4 of class anonymousFunctions$bar$
- val cube = (x: Int) => x*x*x
-
- //InnerClass:
- // public final #_ of #_; class anonymousFunctions$bar$$anonfun$5
- Set(1, 2, 3).exists(_ == 2)
- }
-}
-
-object anonymousClasses {
- //InnerClass:
- // public abstract #_= #_ of #_; //Foo=class anonymousClasses$Foo of class anonymousClasses$
- // public abstract #_= #_ of #_; //Foo$class=class anonymousClasses$Foo$class of class anonymousClasses$
- trait Foo {
- def foo() { println("foo"); }
- override def toString = getClass.getName
- }
- //InnerClass:
- // public final #_; //class anonymousClasses$$anon$1 of class anonymousClasses$
- val x = new Foo() {
- override def foo() { println("foo (overridden)"); }
- def dummy = 0
- }
-}
-
-// Auxiliary functions
-
-trait Test1 {
- private var kind: String = _
- private var mods: String = _
- def printInnerClasses(cls: Class[_]) {
- for (c <- cls.getDeclaredClasses) {
- mods = AccessFlags.asString(c.getModifiers)
- kind = if (c.isInterface) "interface" else "class"
- println(" "+mods+kind+" "+c.getName+
- " of class "+c.getEnclosingClass.getName)
- }
- }
- def printClass(cls: Class[_]) {
- println("\n{{ "+cls.getName+" }}")
- printInnerClasses(cls)
- }
-}
-
-trait Test2 {
- @throws(classOf[Exception])
- // def printInnerClasses(cls: Class[_]) {
- // import java.io._, ch.epfl.lamp.fjbg._
- // val fjbgContext = new FJBGContext(49, 0)
- // val outDir = System.getProperty("partest.output", "cf-attributes.obj")
- // val fileName = outDir+File.separator+cls.getName+".class"
- // val in = new DataInputStream(new FileInputStream(fileName))
- // val jclass = fjbgContext.JClass(in)
- // println(jclass.getInnerClasses)
- // in.close()
- // }
- def printClass(name: String) {
- try { printClass(Class.forName(name)) }
- catch { case e: Exception => println(e) }
- }
- def printClass(cls: Class[_]) {
- println("\n[[ "+cls.getName+" ]]");
- try { printInnerClasses(cls) }
- catch { case e: Exception => println(e) }
- }
-}
-
-object AccessFlags {
- val ACC_PUBLIC = 0x0001
- val ACC_PRIVATE = 0x0002
- val ACC_PROTECTED = 0x0004
- val ACC_STATIC = 0x0008
- val ACC_FINAL = 0x0010
- val ACC_ABSTRACT = 0x0400
-
- def asString(accessFlags: Int): String = {
- val buf = new StringBuilder()
- if ((accessFlags & ACC_PUBLIC) != 0) buf.append("public ")
- else if ((accessFlags & ACC_PROTECTED) != 0) buf.append("protected ")
- else if ((accessFlags & ACC_PRIVATE) != 0) buf.append("private ")
- if ((accessFlags & ACC_ABSTRACT) != 0) buf.append("abstract ")
- else if ((accessFlags & ACC_FINAL) != 0) buf.append("final ")
- buf.toString
- }
-}
-
-/*
- implicit def stringToLines(s: String) = new {
- def lines(n: Int): String = {
- val buf = new StringBuilder();
- var i = 0
- var from = 0
- while (i < n && 0 <= from && from < s.length) {
- val pos = s.indexOf('\n', from)
- if (pos >= 0) { i += 1; buf.append(s.substring(from, pos + 1)); }
- from = pos + 1
- }
- buf.toString()
- }
- }
-*/
-
diff --git a/test/pending/jvm/constant-optimization/Foo_1.flags b/test/pending/jvm/constant-optimization/Foo_1.flags
deleted file mode 100644
index 432f01c02d..0000000000
--- a/test/pending/jvm/constant-optimization/Foo_1.flags
+++ /dev/null
@@ -1 +0,0 @@
-// constant otimization not there yet, -opt:nullness-tracking not enough.
diff --git a/test/pending/jvm/constant-optimization/Foo_1.scala b/test/pending/jvm/constant-optimization/Foo_1.scala
deleted file mode 100644
index 6f408044d7..0000000000
--- a/test/pending/jvm/constant-optimization/Foo_1.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-class Foo_1 {
- def foo() {
- // constant optimization should eliminate all branches
- val i = 1
- val x = if (i != 1) null else "good"
- val y = if (x == null) "good" else x + ""
- println(y)
- }
-} \ No newline at end of file
diff --git a/test/pending/jvm/constant-optimization/Test.scala b/test/pending/jvm/constant-optimization/Test.scala
deleted file mode 100644
index dc0f8f6103..0000000000
--- a/test/pending/jvm/constant-optimization/Test.scala
+++ /dev/null
@@ -1,27 +0,0 @@
-
-import scala.tools.partest.BytecodeTest
-import scala.tools.asm
-import asm.tree.InsnList
-import scala.collection.JavaConverters._
-
-object Test extends BytecodeTest {
- val comparisons = Set(asm.Opcodes.IF_ACMPEQ, asm.Opcodes.IF_ACMPNE, asm.Opcodes.IF_ICMPEQ, asm.Opcodes.IF_ICMPGE, asm.Opcodes.IF_ICMPGT, asm.Opcodes.IF_ICMPLE,
- asm.Opcodes.IF_ICMPLT, asm.Opcodes.IF_ICMPNE, asm.Opcodes.IFEQ, asm.Opcodes.IFGE, asm.Opcodes.IFGT, asm.Opcodes.IFLE, asm.Opcodes.IFLT,
- asm.Opcodes.IFNE, asm.Opcodes.IFNONNULL, asm.Opcodes.IFNULL)
-
- def show: Unit = {
- val classNode = loadClassNode("Foo_1")
- val methodNode = getMethod(classNode, "foo")
- // after optimization there should be no comparisons left
- val expected = 0
-
- val got = countComparisons(methodNode.instructions)
- assert(got == expected, s"expected $expected but got $got comparisons")
- }
-
- def countComparisons(insnList: InsnList): Int = {
- def isComparison(node: asm.tree.AbstractInsnNode): Boolean =
- (comparisons contains node.getOpcode)
- insnList.iterator.asScala count isComparison
- }
-} \ No newline at end of file
diff --git a/test/pending/jvm/javasigs.check b/test/pending/jvm/javasigs.check
deleted file mode 100644
index 299bec5e08..0000000000
--- a/test/pending/jvm/javasigs.check
+++ /dev/null
@@ -1,321 +0,0 @@
-
-@scala.reflect.ScalaSignature(bytes="\006\001i2A!\001\002\001\013\t\t\021IC\001\004\003\035aT-\0349usz\032\001!\006\002\0079M\031\001aB\b\021\005!iQ\"A\005\013\005)Y\021\001\0027b]\036T\021\001D\001\005U\0064\030-\003\002\017\023\t1qJ\0316fGR\004\"\001E\n\016\003EQ\021AE\001\006g\016\fG.Y\005\003)E\0211bU2bY\006|%M[3di\")a\003\001C\001/\0051A(\0338jiz\"\022\001\007\t\0043\001QR\"\001\002\021\005maB\002\001\003\006;\001\021\rA\b\002\002+F\021qD\t\t\003!\001J!!I\t\003\0179{G\017[5oOB\021\001cI\005\003IE\0211!\0218z\021\0251\003\001\"\001(\003\r\021\027M]\013\003Q)\"\"!\013\027\021\005mQC!B\026&\005\004q\"!\001\"\t\r5*C\0211\001/\003\005A\bc\001\t0S%\021\001\'\005\002\ty\tLh.Y7f}!)!\007\001C\001g\005\031am\\8\026\005Q2DCA\0339!\tYb\007B\0038c\t\007aDA\001D\021\025I\024\0071\0016\003\005\031\007")
-public class A<U> implements scala.ScalaObject {
-
- public <B> B bar(scala.Function0<B> x);
-
- public <C> C foo(C c$1);
-
- public A();
-}
-
-@scala.reflect.ScalaSignature(bytes="\006\001\005;Q!\001\002\t\006\025\t\021A\021\006\002\007\0059A(Z7qift4\001\001\t\003\r\035i\021A\001\004\006\021\tA)!\003\002\002\005N\031qA\003\n\021\005-\001R\"\001\007\013\0055q\021\001\0027b]\036T\021aD\001\005U\0064\030-\003\002\022\031\t1qJ\0316fGR\004\"a\005\f\016\003QQ\021!F\001\006g\016\fG.Y\005\003/Q\0211bU2bY\006|%M[3di\")\021d\002C\0015\0051A(\0338jiz\"\022!\002\005\0069\035!\t!H\001\004E\006\024XC\001\020\")\ty\022\006\005\002!C1\001A!\002\005\034\005\004\021\023CA\022\'!\t\031B%\003\002&)\t9aj\034;iS:<\007CA\n(\023\tACCA\002B]fDaAK\016\005\002\004Y\023!\001=\021\007Mas$\003\002.)\tAAHY=oC6,g\bC\0030\017\021\005\001\'A\002g_>,\"!M\032\025\005I*\004C\001\0214\t\025!dF1\001#\005\005\031\005\"\002\034/\001\004\021\024!A2\007\t!\021\001\001O\n\004o)\021\002\"B\r8\t\003QD#A\036\021\005\0319\004\"B\0308\t\003iT#\001 \021\005My\024B\001!\025\005\021)f.\033;")
-public class B implements scala.ScalaObject {
-
- public static final <B> B bar(scala.Function0<B> arg0);
-
- public void foo();
-
- public B();
-}
-
-public final class $anonfun$foo$1 extends scala.runtime.AbstractFunction0 implements java.io.Serializable {
- public static final long serialVersionUID;
- private final java.lang.Object c$1;
-
- public final C apply();
-
- public $anonfun$foo$1(A<U> $outer);
-}
-package scala.actors;
-
-@scala.reflect.ScalaSignature(bytes="\006\001\021Eu!B\001\003\021\0139\021!B!di>\024(BA\002\005\003\031\t7\r^8sg*\tQ!A\003tG\006d\027m\001\001\021\005!IQ\"\001\002\007\013)\021\001RA\006\003\013\005\033Go\034:\024\t%aAc\006\t\003\033Ii\021A\004\006\003\037A\tA\001\\1oO*\t\021#\001\003kCZ\f\027BA\n\017\005\031y%M[3diB\021\001\"F\005\003-\t\0211bQ8nE&t\027\r^8sgB\021\001$G\007\002\t%\021!\004\002\002\f\'\016\fG.Y(cU\026\034G\017C\003\035\023\021\005Q$\001\004=S:LGO\020\013\002\017\035)q$\003E\003A\005)1\013^1uKB\021\021EI\007\002\023\031)1%\003E\003I\t)1\013^1uKN\031!%J\f\021\005a1\023BA\024\005\005-)e.^7fe\006$\030n\0348\t\013q\021C\021A\025\025\003\001Bqa\013\022C\002\023\005A&A\002OK^,\022!\f\t\003]=j\021AI\005\003a\031\022QAV1mk\026DaA\r\022!\002\023i\023\001\002(fo\002Bq\001\016\022C\002\023\005A&\001\005Sk:t\027M\0317f\021\0311$\005)A\005[\005I!+\0368oC\ndW\r\t\005\bq\t\022\r\021\"\001-\003%\031Vo\0359f]\022,G\r\003\004;E\001\006I!L\001\013\'V\034\b/\0328eK\022\004\003b\002\037#\005\004%\t\001L\001\017)&lW\rZ*vgB,g\016Z3e\021\031q$\005)A\005[\005yA+[7fIN+8\017]3oI\026$\007\005C\004AE\t\007I\021\001\027\002\017\tcwnY6fI\"1!I\tQ\001\n5\n\001B\0217pG.,G\r\t\005\b\t\n\022\r\021\"\001-\0031!\026.\\3e\0052|7m[3e\021\0311%\005)A\005[\005iA+[7fI\ncwnY6fI\002Bq\001\023\022C\002\023\005A&\001\006UKJl\027N\\1uK\022DaA\023\022!\002\023i\023a\003+fe6Lg.\031;fI\002B\001\002T\005C\002\023\005!!T\001\003i2,\022A\024\t\004\033=\013\026B\001)\017\005-!\006N]3bI2{7-\0317\021\005!\021\026BA*\003\0051\021V\r\0357z%\026\f7\r^8s\021\031)\026\002)A\005\035\006\031A\017\034\021\t\021]K!\031!C\001\005a\013Q\001^5nKJ,\022!\027\t\0035vk\021a\027\006\0039B\tA!\036;jY&\021al\027\002\006)&lWM\035\005\007A&\001\013\021B-\002\rQLW.\032:!\021!\021\027B1A\005\002\t\031\027\001E:vgB,g\016Z#yG\026\004H/[8o+\005!\007C\001\005f\023\t1\'AA\nTkN\004XM\0343BGR|\'oQ8oiJ|G\016\003\004i\023\001\006I\001Z\001\022gV\034\b/\0328e\013b\034W\r\035;j_:\004\003\"\0026\n\t\003Y\027\001B:fY\032,\022\001\034\t\003\02154qA\003\002\021\002\007\005anE\004n\031=\f&/^\f\021\005!\001\030BA9\003\0055\t%m\035;sC\016$\030i\031;peB\021\001b]\005\003i\n\021Q\"Q2u_J\034\025M\034*fa2L\bc\001\005wq&\021qO\001\002\r\023:\004X\017^\"iC:tW\r\034\t\0031eL!A\037\003\003\007\005s\027\020C\003}[\022\005Q0\001\004%S:LG\017\n\013\002}B\021\001d`\005\004\003\003!!\001B+oSRD\021\"!\002n\001\004%I!a\002\002\027%\0348+^:qK:$W\rZ\013\003\003\023\0012\001GA\006\023\r\ti\001\002\002\b\005>|G.Z1o\021%\t\t\"\034a\001\n\023\t\031\"A\bjgN+8\017]3oI\026$w\fJ3r)\rq\030Q\003\005\013\003/\ty!!AA\002\005%\021a\001=%c!A\0211D7!B\023\tI!\001\007jgN+8\017]3oI\026$\007\005\013\003\002\032\005}\001c\001\r\002\"%\031\0211\005\003\003\021Y|G.\031;jY\026D\021\"a\nn\001\004%I!!\013\002\021I,7-Z5wK\022,\"!a\013\021\ta\ti\003_\005\004\003_!!AB(qi&|g\016C\005\00245\004\r\021\"\003\0026\005a!/Z2fSZ,Gm\030\023fcR\031a0a\016\t\025\005]\021\021GA\001\002\004\tY\003\003\005\002<5\004\013\025BA\026\003%\021XmY3jm\026$\007\005\013\003\002:\005}\001\002CA![\022E#!a\021\002\023M\034\007.\0323vY\026\024XCAA#!\rA\021qI\005\004\003\023\022!AC%TG\",G-\0367fe\"A\021QJ7\005B\t\ty%A\006ti\006\024HoU3be\016DG\003CA)\003/\nY&!\032\021\ta\t\031F`\005\004\003+\"!!\003$v]\016$\030n\03481\021\035\tI&a\023A\002a\f1!\\:h\021!\ti&a\023A\002\005}\023a\002:fa2LHk\034\t\005\021\005\005\0040C\002\002d\t\021QbT;uaV$8\t[1o]\026d\007\002CA4\003\027\002\r!!\033\002\017!\fg\016\0327feB)\001$a\033yq&\031\021Q\016\003\003\037A\013\'\017^5bY\032+hn\031;j_:D\001\"!\035n\t\003\022\0211O\001\016g\026\f\'o\0315NC&d\'m\034=\025\017y\f)(a \002\002\"A\021qOA8\001\004\tI(A\005ti\006\024H/\0242pqB!\001\"a\037y\023\r\tiH\001\002\007\033F+X-^3\t\021\005\035\024q\016a\001\003SB\001\"a!\002p\001\007\021\021B\001\023e\026\034X/\\3P]N\013W.\032+ie\026\fG\r\003\005\002\b6$\tEAAE\0031i\027m[3SK\006\034G/[8o)!\tY)!%\002\026\006]\005cA\007\002\016&\031\021q\022\b\003\021I+hN\\1cY\026D\001\"a%\002\006\002\007\021\021K\001\004MVt\007\002CA4\003\013\003\r!!\033\t\017\005e\023Q\021a\001q\"9\0211T7\005\002\005u\025a\002:fG\026Lg/Z\013\005\003?\013)\013\006\003\002\"\006E\006\003BAR\003Kc\001\001\002\005\002(\006e%\031AAU\005\005\021\026cAAVqB\031\001$!,\n\007\005=FAA\004O_RD\027N\\4\t\021\005M\026\021\024a\001\003k\013\021A\032\t\0071\005-\0040!)\t\017\005eV\016\"\001\002<\006i!/Z2fSZ,w+\033;iS:,B!!0\002DR!\021qXAe)\021\t\t-!2\021\t\005\r\0261\031\003\t\003O\0139L1\001\002*\"A\0211WA\\\001\004\t9\r\005\004\031\003WB\030\021\031\005\t\003\027\f9\f1\001\002N\006!Qn]3d!\rA\022qZ\005\004\003#$!\001\002\'p]\036Dq!!6n\t\003\n9.A\003sK\006\034G\017\006\003\002,\006e\007\002CA4\003\'\004\r!a7\021\013a\tY\007\037@\t\017\005}W\016\"\021\002b\006Y!/Z1di^KG\017[5o)\021\t\031/a:\025\t\005-\026Q\035\005\t\003O\ni\0161\001\002\\\"A\0211ZAo\001\004\ti\rC\004\002l6$\t!!<\002\r\021\nX.\031:l+\005A\b\002CAy[\022\005#!a=\002\033M\034\007.\0323vY\026\f5\r^8s)\025q\030Q_A|\021!\t\031,a<A\002\005%\004bBA-\003_\004\r\001_\004\b\003wl\007RBA\177\003\035\021Gn\\2lKJ\004B!a@\003\0025\tQNB\004\003\0045DiA!\002\003\017\tdwnY6feN1!\021\001\007\003\b]\001BA!\003\003\0205\021!1\002\006\004\005\033!\021AC2p]\016,(O]3oi&!!\021\003B\006\0059i\025M\\1hK\022\024En\\2lKJDq\001\bB\001\t\003\021)\002\006\002\002~\"A!\021\004B\001\t\003\021Y\"A\003cY>\0347\016\006\002\002\n!A!q\004B\001\t\003\t9!\001\007jgJ+G.Z1tC\ndW\r\003\004\003$5$I!`\001\rgV\034\b/\0328e\003\016$xN\035\005\007\005OiG\021B?\002\027I,7/^7f\003\016$xN\035\005\t\005WiG\021\t\002\002\b\0059Q\r_5uS:<\007b\002B\030[\022\005#!`\001\bI>\034H/\031:u\021\035\021\031$\034C!\005k\tQa\035;beR$\022\001\034\005\b\005siG\021\tB\036\003!9W\r^*uCR,WC\001B\037!\r\021yd\f\b\004\005\003rbB\001\005\001\021)\021)%\034a\001\n\003\021!qI\001\006Y&t7n]\013\003\005\023\002RAa\023\003\\=tAA!\024\003X9!!q\nB+\033\t\021\tFC\002\003T\031\ta\001\020:p_Rt\024\"A\003\n\007\teC!A\004qC\016\\\027mZ3\n\t\tu#q\f\002\005\031&\034HOC\002\003Z\021A!Ba\031n\001\004%\tA\001B3\003%a\027N\\6t?\022*\027\017F\002\177\005OB!\"a\006\003b\005\005\t\031\001B%\021!\021Y\'\034Q!\n\t%\023A\0027j].\034\b\005C\004\003p5$\tA!\035\002\t1Lgn\033\013\004_\nM\004b\002B;\005[\002\ra\\\001\003i>DqAa\034n\t\003\021I\bF\002m\005wB\021B! \003x\021\005\rAa \002\t\t|G-\037\t\0051\t\005e0C\002\003\004\022\021\001\002\0202z]\006lWM\020\005\t\005\017kG\021\001\002\003\n\0061A.\0338l)>$2A BF\021\035\021)H!\"A\002=DqAa$n\t\003\021\t*\001\004v]2Lgn\033\013\004}\nM\005b\002BK\005\033\003\ra\\\001\005MJ|W\016\003\005\003\0326$\tA\001BN\003))h\016\\5oW\032\023x.\034\013\004}\nu\005b\002BK\005/\003\ra\034\005\n\005Ck\007\031!C\001\003\017\t\001\002\036:ba\026C\030\016\036\005\n\005Kk\007\031!C\001\005O\013A\002\036:ba\026C\030\016^0%KF$2A BU\021)\t9Ba)\002\002\003\007\021\021\002\005\t\005[k\007\025)\003\002\n\005IAO]1q\013bLG\017\t\025\005\005W\013y\002C\005\00346\004\r\021\"\003\0036\006QQ\r_5u%\026\f7o\0348\026\005\t]\006c\001\r\003:&\031!1\030\003\003\r\005s\027PU3g\021%\021y,\034a\001\n\023\021\t-\001\bfq&$(+Z1t_:|F%Z9\025\007y\024\031\r\003\006\002\030\tu\026\021!a\001\005oC\001Ba2nA\003&!qW\001\fKbLGOU3bg>t\007\005\003\006\003L6\004\r\021\"\001\003\003\017\t!b\0355pk2$W\t_5u\021)\021y-\034a\001\n\003\021!\021[\001\017g\"|W\017\0343Fq&$x\fJ3r)\rq(1\033\005\013\003/\021i-!AA\002\005%\001\002\003Bl[\002\006K!!\003\002\027MDw.\0367e\013bLG\017\t\005\t\0057lG\021\003\002\003^\006!Q\r_5u)\021\tYKa8\t\021\t\005(\021\034a\001\005o\013aA]3bg>t\007\002\003Bn[\022E#A!:\025\005\005-\006\002\003Bu[\022\005!Aa;\002\025\025D\030\016\036\'j].,G\r\006\002\002R!A!\021^7\005\002\t\021y\017\006\003\002R\tE\b\002\003Bq\005[\004\rAa.\t\021\tmW\016\"\001\003\005k$RA B|\005sDqA!&\003t\002\007q\016\003\005\003b\nM\b\031\001B\\\021!\021i0\034C\001\005\t}\030aC8o)\026\024X.\0338bi\026$2A`B\001\021%\t\031La?\005\002\004\021y\b\003\007\004\0065\f\t\021!C\005\007\017\031y!A\ttkB,\'\017J:uCJ$8+Z1sG\"$\002\"!\025\004\n\r-1Q\002\005\b\0033\032\031\0011\001y\021!\tifa\001A\002\005}\003\002CA4\007\007\001\r!!\033\n\t\00553\021C\005\004\007\'\021!a\002*fC\016$xN\035\005\r\007/i\027\021!A\005\n\re1QD\001\fgV\004XM\035\023sK\006\034G\017\006\003\002,\016m\001\002CA4\007+\001\r!a7\n\007\005U\'\013\003\007\004\"5\f\t\021!C\005\007G\031Y#A\ttkB,\'\017\n:fC\016$x+\033;iS:$Ba!\n\004*Q!\0211VB\024\021!\t9ga\bA\002\005m\007\002CAf\007?\001\r!!4\n\007\005}\'\013C\006\00405\f\t\021!C\005{\016E\022!D:va\026\024H\005Z8ti\006\024H/\003\003\0030\rE\001\002DB\033[\006\005\t\021\"\003\0048\rm\022aC:va\026\024He\035;beR$\"a!\017\021\t!\031\t\002_\005\005\005g\031\t\002\003\007\004@5\f\t\021!C\005\005w\031\t%\001\btkB,\'\017J4fiN#\030\r^3\n\007\te\"\013\003\007\004F5\f\t\021!C\005\005K\0349%\001\006tkB,\'\017J3ySRLAAa7\004\022!*Qna\023\004RA\031\001d!\024\n\007\r=CA\001\tTKJL\027\r\034,feNLwN\\+J\tzAQ\037\013e\004,[\003}\022K\002n\007+\0022\001GB,\023\r\031I\006\002\002\rg\026\024\030.\0317ju\006\024G.\032\005\bU&!\tAAB/)\ra7q\f\005\t\007C\032Y\0061\001\002F\005)1o\0315fI\"A1QM\005\005\002\t\0319\'A\004sC^\034V\r\0344\026\003EC\001b!\032\n\t\003\02111\016\013\004#\0165\004\002CB1\007S\002\r!!\022\t\017\rE\024\002\"\003\002D\005y\001/\031:f]R\0346\r[3ek2,\'\017C\004\004v%!\taa\036\002\025I,7/\032;Qe>D\0300F\001\177\021\035\031Y(\003C\001\007o\n\021b\0317fCJ\034V\r\0344\t\017\r}\024\002\"\001\004\002\006)\021m\031;peR\031Ana!\t\023\tu4Q\020CA\002\t}\004bBBD\023\021\0051\021R\001\be\026\f7\r^8s)\ra71\022\005\n\005{\032)\t\"a\001\007\033\003R\001\007BA\007\037\003B\001GBI}&\03111\023\003\003\023I+7\017]8oI\026\024\bbBAv\023\021\005\021Q\036\005\b\0037KA\021ABM+\021\031Yja(\025\t\ru51\025\t\005\003G\033y\n\002\005\004\"\016]%\031AAU\005\005\t\005\002CAZ\007/\003\ra!*\021\ra\tY\007_BO\021\035\tI,\003C\001\007S+Baa+\0042R!1QVB\\)\021\031yka-\021\t\005\r6\021\027\003\t\003O\0339K1\001\002*\"A\0211WBT\001\004\031)\f\005\004\031\003WB8q\026\005\t\003\027\0349\0131\001\002N\"9\021Q[\005\005\002\rmF\003BAV\007{C\001\"a-\004:\002\007\0211\034\005\b\003?LA\021ABa)\021\031\031ma2\025\t\005-6Q\031\005\t\003g\033y\f1\001\002\\\"A\0211ZB`\001\004\ti\rC\004\004L&!\ta!4\002\023\0254XM\034;m_>\004H\003BAV\007\037D\001\"a-\004J\002\007\0211\034\004\007\007\'LAa!6\003+I+7-\036:tSZ,\007K]8ys\"\013g\016\0327feN11\021\033\007\002\\^A!b!7\004R\n\005\t\025!\003R\003\005\t\007bCAZ\007#\024\t\021)A\005\0037Dq\001HBi\t\003\031y\016\006\004\004b\016\r8Q\035\t\004C\rE\007bBBm\007;\004\r!\025\005\t\003g\033i\0161\001\002\\\"A1\021^Bi\t\003\031Y/A\006jg\022+g-\0338fI\006#H\003BA\005\007[Dqaa<\004h\002\007\0010A\001n\021!\031\031p!5\005\002\rU\030!B1qa2LHc\001@\004x\"91q^By\001\004A\bbBB~\023\021\0051Q`\001\007g\026tG-\032:\026\005\005}\003b\002C\001\023\021\005A1A\001\006e\026\004H.\037\013\004}\022\025\001bBA-\007\177\004\r\001\037\005\007\t\003IA\021A?\t\017\021-\021\002\"\001\005\016\005YQ.Y5mE>D8+\033>f+\t!y\001E\002\031\t#I1\001b\005\005\005\rIe\016\036\005\b\t/IA\021\001C\r\003%\021Xm\0359p]\022|e.\006\004\005\034\021\035B1\006\013\005\t;!\t\004E\004\031\t?!\031\003b\f\n\007\021\005BAA\005Gk:\034G/[8ocA9\001$a\033\005&\021%\002\003BAR\tO!\001b!)\005\026\t\007\021\021\026\t\005\003G#Y\003\002\005\005.\021U!\031AAU\005\005\021\005#\002\r\004\022\022%\002\002CAJ\t+\001\r\001b\r\021\017a!y\002\"\016\002,B1\001$a\033\005&y4!\002\"\017\n!\003\r\nA\001C\036\005\021\021u\016Z=\026\t\021uB1K\n\004\toa\001\002\003C!\to1\t\001b\021\002\017\005tG\r\0265f]V!AQ\tC()\rqHq\t\005\n\t\023\"y\004\"a\001\t\027\nQa\034;iKJ\004R\001\007BA\t\033\002B!a)\005P\021AA\021\013C \005\004\tIKA\001c\t!!)\006b\016C\002\005%&!A1\t\017\021e\023\002b\001\005\\\0051Qn\033\"pIf,B\001\"\030\005jQ!Aq\fC6%\025!\t\007\004C3\r\035!\031\007b\026\001\t?\022A\002\020:fM&tW-\\3oiz\002R!\tC\034\tO\002B!a)\005j\021AAQ\013C,\005\004\tI\013C\005\003~\021]C\0211\001\005nA)\001D!!\005h!9!qN\005\005\002\021EDcA8\005t!9!Q\017C8\001\004y\007b\002B8\023\021\005Aq\017\013\004Y\022e\004\"\003B?\tk\"\t\031\001B@\021\035\021y)\003C\001\t{\"2A C@\021\035\021)\nb\037A\002=DqAa7\n\t\003!\031\t\006\003\002,\022\025\005\002\003Bq\t\003\003\rAa.\t\017\tm\027\002\"\001\003f\"QA1R\005\005\002\003%\t\002\"$\002\027I,\027\r\032*fg>dg/\032\013\002\031!\032\021b!\026")
-public interface Actor extends scala.actors.AbstractActor, scala.actors.ReplyReactor, scala.actors.ActorCanReply, scala.actors.InputChannel<java.lang.Object>, scala.ScalaObject {
-
- public static interface Body<a> {
-
- <b> void andThen(scala.Function0<b> arg0);
- }
-
- public static class RecursiveProxyHandler implements scala.PartialFunction<java.lang.Object,java.lang.Object>, scala.ScalaObject {
- private final scala.actors.ReplyReactor a;
- private final scala.PartialFunction<java.lang.Object,java.lang.Object> f;
-
- public <A1B1> scala.PartialFunction<A1,B1> orElse(scala.PartialFunction<A1,B1> that);
-
- public <C> scala.PartialFunction<java.lang.Object,C> andThen(scala.Function1<java.lang.Object,C> k);
-
- public scala.Function1<java.lang.Object,scala.Option<java.lang.Object>> lift();
-
- public void apply$mcVI$sp(int v1);
-
- public boolean apply$mcZI$sp(int v1);
-
- public int apply$mcII$sp(int v1);
-
- public float apply$mcFI$sp(int v1);
-
- public long apply$mcJI$sp(int v1);
-
- public double apply$mcDI$sp(int v1);
-
- public void apply$mcVJ$sp(long v1);
-
- public boolean apply$mcZJ$sp(long v1);
-
- public int apply$mcIJ$sp(long v1);
-
- public float apply$mcFJ$sp(long v1);
-
- public long apply$mcJJ$sp(long v1);
-
- public double apply$mcDJ$sp(long v1);
-
- public void apply$mcVF$sp(float v1);
-
- public boolean apply$mcZF$sp(float v1);
-
- public int apply$mcIF$sp(float v1);
-
- public float apply$mcFF$sp(float v1);
-
- public long apply$mcJF$sp(float v1);
-
- public double apply$mcDF$sp(float v1);
-
- public void apply$mcVD$sp(double v1);
-
- public boolean apply$mcZD$sp(double v1);
-
- public int apply$mcID$sp(double v1);
-
- public float apply$mcFD$sp(double v1);
-
- public long apply$mcJD$sp(double v1);
-
- public double apply$mcDD$sp(double v1);
-
- public java.lang.String toString();
-
- public <A> scala.Function1<A,java.lang.Object> compose(scala.Function1<A,java.lang.Object> g);
-
- public <A> scala.Function1<A,java.lang.Object> compose$mcVI$sp(scala.Function1<A,java.lang.Integer> g);
-
- public <A> scala.Function1<A,java.lang.Boolean> compose$mcZI$sp(scala.Function1<A,java.lang.Integer> g);
-
- public <A> scala.Function1<A,java.lang.Integer> compose$mcII$sp(scala.Function1<A,java.lang.Integer> g);
-
- public <A> scala.Function1<A,java.lang.Float> compose$mcFI$sp(scala.Function1<A,java.lang.Integer> g);
-
- public <A> scala.Function1<A,java.lang.Long> compose$mcJI$sp(scala.Function1<A,java.lang.Integer> g);
-
- public <A> scala.Function1<A,java.lang.Double> compose$mcDI$sp(scala.Function1<A,java.lang.Integer> g);
-
- public <A> scala.Function1<A,java.lang.Object> compose$mcVJ$sp(scala.Function1<A,java.lang.Long> g);
-
- public <A> scala.Function1<A,java.lang.Boolean> compose$mcZJ$sp(scala.Function1<A,java.lang.Long> g);
-
- public <A> scala.Function1<A,java.lang.Integer> compose$mcIJ$sp(scala.Function1<A,java.lang.Long> g);
-
- public <A> scala.Function1<A,java.lang.Float> compose$mcFJ$sp(scala.Function1<A,java.lang.Long> g);
-
- public <A> scala.Function1<A,java.lang.Long> compose$mcJJ$sp(scala.Function1<A,java.lang.Long> g);
-
- public <A> scala.Function1<A,java.lang.Double> compose$mcDJ$sp(scala.Function1<A,java.lang.Long> g);
-
- public <A> scala.Function1<A,java.lang.Object> compose$mcVF$sp(scala.Function1<A,java.lang.Float> g);
-
- public <A> scala.Function1<A,java.lang.Boolean> compose$mcZF$sp(scala.Function1<A,java.lang.Float> g);
-
- public <A> scala.Function1<A,java.lang.Integer> compose$mcIF$sp(scala.Function1<A,java.lang.Float> g);
-
- public <A> scala.Function1<A,java.lang.Float> compose$mcFF$sp(scala.Function1<A,java.lang.Float> g);
-
- public <A> scala.Function1<A,java.lang.Long> compose$mcJF$sp(scala.Function1<A,java.lang.Float> g);
-
- public <A> scala.Function1<A,java.lang.Double> compose$mcDF$sp(scala.Function1<A,java.lang.Float> g);
-
- public <A> scala.Function1<A,java.lang.Object> compose$mcVD$sp(scala.Function1<A,java.lang.Double> g);
-
- public <A> scala.Function1<A,java.lang.Boolean> compose$mcZD$sp(scala.Function1<A,java.lang.Double> g);
-
- public <A> scala.Function1<A,java.lang.Integer> compose$mcID$sp(scala.Function1<A,java.lang.Double> g);
-
- public <A> scala.Function1<A,java.lang.Float> compose$mcFD$sp(scala.Function1<A,java.lang.Double> g);
-
- public <A> scala.Function1<A,java.lang.Long> compose$mcJD$sp(scala.Function1<A,java.lang.Double> g);
-
- public <A> scala.Function1<A,java.lang.Double> compose$mcDD$sp(scala.Function1<A,java.lang.Double> g);
-
- public <A> scala.Function1<java.lang.Integer,A> andThen$mcVI$sp(scala.Function1<java.lang.Object,A> g);
-
- public <A> scala.Function1<java.lang.Integer,A> andThen$mcZI$sp(scala.Function1<java.lang.Boolean,A> g);
-
- public <A> scala.Function1<java.lang.Integer,A> andThen$mcII$sp(scala.Function1<java.lang.Integer,A> g);
-
- public <A> scala.Function1<java.lang.Integer,A> andThen$mcFI$sp(scala.Function1<java.lang.Float,A> g);
-
- public <A> scala.Function1<java.lang.Integer,A> andThen$mcJI$sp(scala.Function1<java.lang.Long,A> g);
-
- public <A> scala.Function1<java.lang.Integer,A> andThen$mcDI$sp(scala.Function1<java.lang.Double,A> g);
-
- public <A> scala.Function1<java.lang.Long,A> andThen$mcVJ$sp(scala.Function1<java.lang.Object,A> g);
-
- public <A> scala.Function1<java.lang.Long,A> andThen$mcZJ$sp(scala.Function1<java.lang.Boolean,A> g);
-
- public <A> scala.Function1<java.lang.Long,A> andThen$mcIJ$sp(scala.Function1<java.lang.Integer,A> g);
-
- public <A> scala.Function1<java.lang.Long,A> andThen$mcFJ$sp(scala.Function1<java.lang.Float,A> g);
-
- public <A> scala.Function1<java.lang.Long,A> andThen$mcJJ$sp(scala.Function1<java.lang.Long,A> g);
-
- public <A> scala.Function1<java.lang.Long,A> andThen$mcDJ$sp(scala.Function1<java.lang.Double,A> g);
-
- public <A> scala.Function1<java.lang.Float,A> andThen$mcVF$sp(scala.Function1<java.lang.Object,A> g);
-
- public <A> scala.Function1<java.lang.Float,A> andThen$mcZF$sp(scala.Function1<java.lang.Boolean,A> g);
-
- public <A> scala.Function1<java.lang.Float,A> andThen$mcIF$sp(scala.Function1<java.lang.Integer,A> g);
-
- public <A> scala.Function1<java.lang.Float,A> andThen$mcFF$sp(scala.Function1<java.lang.Float,A> g);
-
- public <A> scala.Function1<java.lang.Float,A> andThen$mcJF$sp(scala.Function1<java.lang.Long,A> g);
-
- public <A> scala.Function1<java.lang.Float,A> andThen$mcDF$sp(scala.Function1<java.lang.Double,A> g);
-
- public <A> scala.Function1<java.lang.Double,A> andThen$mcVD$sp(scala.Function1<java.lang.Object,A> g);
-
- public <A> scala.Function1<java.lang.Double,A> andThen$mcZD$sp(scala.Function1<java.lang.Boolean,A> g);
-
- public <A> scala.Function1<java.lang.Double,A> andThen$mcID$sp(scala.Function1<java.lang.Integer,A> g);
-
- public <A> scala.Function1<java.lang.Double,A> andThen$mcFD$sp(scala.Function1<java.lang.Float,A> g);
-
- public <A> scala.Function1<java.lang.Double,A> andThen$mcJD$sp(scala.Function1<java.lang.Long,A> g);
-
- public <A> scala.Function1<java.lang.Double,A> andThen$mcDD$sp(scala.Function1<java.lang.Double,A> g);
-
- public <R1> scala.PartialFunction<java.lang.Object,R1> unlift(scala.Predef.$less$colon$less<java.lang.Object,scala.Option<R1>> ev);
-
- public boolean isDefinedAt(java.lang.Object m);
-
- public void apply(java.lang.Object m);
-
- public scala.Function1 andThen(scala.Function1 g);
-
- public java.lang.Object apply(java.lang.Object v1);
-
- public RecursiveProxyHandler(scala.actors.ReplyReactor a,
- scala.PartialFunction<java.lang.Object,java.lang.Object> f);
- }
- long serialVersionUID;
-
- scala.Function0<java.lang.Object> scala$actors$Actor$$super$startSearch(java.lang.Object arg0,
- scala.actors.OutputChannel<java.lang.Object> arg1,
- scala.PartialFunction<java.lang.Object,java.lang.Object> arg2);
-
- scala.runtime.Nothing$ scala$actors$Actor$$super$react(scala.PartialFunction<java.lang.Object,java.lang.Object> arg0);
-
- scala.runtime.Nothing$ scala$actors$Actor$$super$reactWithin(long arg0,
- scala.PartialFunction<java.lang.Object,java.lang.Object> arg1);
-
- void scala$actors$Actor$$super$dostart();
-
- scala.actors.Reactor<java.lang.Object> scala$actors$Actor$$super$start();
-
- scala.Enumeration.Value scala$actors$Actor$$super$getState();
-
- scala.runtime.Nothing$ scala$actors$Actor$$super$exit();
-
- boolean scala$actors$Actor$$isSuspended();
-
- @scala.runtime.TraitSetter
- void scala$actors$Actor$$isSuspended_$eq(boolean arg0);
-
- scala.Option<java.lang.Object> scala$actors$Actor$$received();
-
- @scala.runtime.TraitSetter
- void scala$actors$Actor$$received_$eq(scala.Option<java.lang.Object> arg0);
-
- scala.actors.IScheduler scheduler();
-
- scala.Function0<java.lang.Object> startSearch(java.lang.Object arg0,
- scala.actors.OutputChannel<java.lang.Object> arg1,
- scala.PartialFunction<java.lang.Object,java.lang.Object> arg2);
-
- void searchMailbox(scala.actors.MQueue<java.lang.Object> arg0,
- scala.PartialFunction<java.lang.Object,java.lang.Object> arg1,
- boolean arg2);
-
- java.lang.Runnable makeReaction(scala.Function0<java.lang.Object> arg0,
- scala.PartialFunction<java.lang.Object,java.lang.Object> arg1,
- java.lang.Object arg2);
-
- <R> R receive(scala.PartialFunction<java.lang.Object,R> arg0);
-
- <R> R receiveWithin(long arg0,
- scala.PartialFunction<java.lang.Object,R> arg1);
-
- scala.runtime.Nothing$ react(scala.PartialFunction<java.lang.Object,java.lang.Object> arg0);
-
- scala.runtime.Nothing$ reactWithin(long arg0,
- scala.PartialFunction<java.lang.Object,java.lang.Object> arg1);
-
- java.lang.Object $qmark();
-
- void scheduleActor(scala.PartialFunction<java.lang.Object,java.lang.Object> arg0,
- java.lang.Object arg1);
-
- scala.actors.Actor$blocker$ scala$actors$Actor$$blocker();
-
- boolean exiting();
-
- void dostart();
-
- scala.actors.Actor start();
-
- scala.Enumeration.Value getState();
-
- scala.collection.immutable.List<scala.actors.AbstractActor> links();
-
- @scala.runtime.TraitSetter
- void links_$eq(scala.collection.immutable.List<scala.actors.AbstractActor> arg0);
-
- scala.actors.AbstractActor link(scala.actors.AbstractActor arg0);
-
- scala.actors.Actor link(scala.Function0<java.lang.Object> arg0);
-
- void linkTo(scala.actors.AbstractActor arg0);
-
- void unlink(scala.actors.AbstractActor arg0);
-
- void unlinkFrom(scala.actors.AbstractActor arg0);
-
- boolean trapExit();
-
- @scala.runtime.TraitSetter
- void trapExit_$eq(boolean arg0);
-
- java.lang.Object scala$actors$Actor$$exitReason();
-
- @scala.runtime.TraitSetter
- void scala$actors$Actor$$exitReason_$eq(java.lang.Object arg0);
-
- boolean shouldExit();
-
- @scala.runtime.TraitSetter
- void shouldExit_$eq(boolean arg0);
-
- scala.runtime.Nothing$ exit(java.lang.Object arg0);
-
- scala.runtime.Nothing$ exit();
-
- scala.Function0<java.lang.Object> exitLinked();
-
- scala.Function0<java.lang.Object> exitLinked(java.lang.Object arg0);
-
- void exit(scala.actors.AbstractActor arg0,
- java.lang.Object arg1);
-
- void onTerminate(scala.Function0<java.lang.Object> arg0);
-}
diff --git a/test/pending/jvm/javasigs.scala b/test/pending/jvm/javasigs.scala
deleted file mode 100644
index d18a4e6fb5..0000000000
--- a/test/pending/jvm/javasigs.scala
+++ /dev/null
@@ -1,78 +0,0 @@
-import java.io._
-
-object Scalatest {
- val outputdir = System.getProperty("partest.output", "inner.obj")
- val scalalib = System.getProperty("partest.lib", "")
- val classpath = outputdir + File.pathSeparator + scalalib
- val javacmd = System.getProperty("javacmd", "java")
- val javac = System.getProperty("javaccmd", "javac")
-
- def javac(src: String, opts: String, fname: String) {
- val tmpfilename = outputdir + File.separator + fname
- val tmpfile = new FileWriter(tmpfilename)
- tmpfile.write(src)
- tmpfile.close
- exec(javac + " -d " + outputdir + " -classpath " + classpath + " " + opts + tmpfilename)
- }
-
- def java(cname: String) =
- exec(javacmd + " -cp " + classpath + " " + cname)
-
- class Slurp(in: BufferedReader) extends Thread("slurper") {
- var done = false
- override def run() {
- while (!done) if (in.ready) println(in.readLine())
- }
- }
-
- def slurp(in: BufferedReader): Slurp = {
- val s = new Slurp(in)
- s.start()
- s
- }
-
-
- /** Execute cmd, wait for the process to end and pipe its output to stdout */
- def exec(cmd: String) {
- val proc = Runtime.getRuntime().exec(cmd)
- val inp = new BufferedReader(new InputStreamReader(proc.getInputStream))
- val errp = new BufferedReader(new InputStreamReader(proc.getErrorStream))
- val t1 = slurp(inp)
- val t2 = slurp(errp)
- proc.waitFor()
- t1.done = true
- t2.done = true
- t1.join()
- t2.join()
- }
-}
-
-// Test correct java signatures for anonymous classes. Enclosing method attributes should
-// allow javac to see the type parameters in foo. See #3249.
-
-class A[U] {
- def bar[B](x : => B) = x
- def foo[C](c : C) : C = bar(c)
-}
-
-object B {
- def bar[B](x : => B) = x
- def foo[C](c : C) : C = {
- class InnerB(x: C)
- c
- }
-}
-
-class B {
- def foo {}
-}
-
-object Test {
- def main(args: Array[String]) {
- import Scalatest._
- exec("%s -Xprint -cp %s A".format(javac, classpath))
- exec("%s -Xprint -cp %s B".format(javac, classpath))
- exec("%s -Xprint -cp %s A$$anonfun$foo$1".format(javac, classpath))
- exec("%s -Xprint -cp %s scala.actors.Actor".format(javac, classpath))
- }
-}
diff --git a/test/pending/jvm/t2705/GenericInterface.java b/test/pending/jvm/t2705/GenericInterface.java
deleted file mode 100644
index ff4ecd403d..0000000000
--- a/test/pending/jvm/t2705/GenericInterface.java
+++ /dev/null
@@ -1 +0,0 @@
-public interface GenericInterface<T> { }
diff --git a/test/pending/jvm/t2705/Methods.java b/test/pending/jvm/t2705/Methods.java
deleted file mode 100644
index 00eed6c595..0000000000
--- a/test/pending/jvm/t2705/Methods.java
+++ /dev/null
@@ -1,4 +0,0 @@
-public class Methods {
- public static <T> GenericInterface<T> getGenericInterface() { return null; }
- public static <T> void acceptGenericInterface(GenericInterface<? super T> gi) { }
-} \ No newline at end of file
diff --git a/test/pending/jvm/t2705/t2705.scala b/test/pending/jvm/t2705/t2705.scala
deleted file mode 100644
index cc3cfd9faf..0000000000
--- a/test/pending/jvm/t2705/t2705.scala
+++ /dev/null
@@ -1,5 +0,0 @@
-class GenericsCompilerCrashTest {
- def test() {
- Methods.acceptGenericInterface(Methods.getGenericInterface())
- }
-} \ No newline at end of file
diff --git a/test/pending/neg/dot-classpath.flags b/test/pending/neg/dot-classpath.flags
deleted file mode 100644
index 5af7a81156..0000000000
--- a/test/pending/neg/dot-classpath.flags
+++ /dev/null
@@ -1 +0,0 @@
--Ylog-classpath \ No newline at end of file
diff --git a/test/pending/neg/dot-classpath/S_1.scala b/test/pending/neg/dot-classpath/S_1.scala
deleted file mode 100644
index f8bd12404c..0000000000
--- a/test/pending/neg/dot-classpath/S_1.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-package foo {
- class Bippy
-}
diff --git a/test/pending/neg/dot-classpath/S_2.scala b/test/pending/neg/dot-classpath/S_2.scala
deleted file mode 100644
index e44c1a5bb8..0000000000
--- a/test/pending/neg/dot-classpath/S_2.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-class A {
- def f = new foo.Bippy
-} \ No newline at end of file
diff --git a/test/pending/neg/macro-invalidusage-badbounds-b.check b/test/pending/neg/macro-invalidusage-badbounds-b.check
deleted file mode 100644
index 277f407d38..0000000000
--- a/test/pending/neg/macro-invalidusage-badbounds-b.check
+++ /dev/null
@@ -1,4 +0,0 @@
-Macros_Test_2.scala:7: error: type arguments [Int] do not conform to macro method foo's type parameter bounds [U <: String]
- foo[Int]
- ^
-one error found
diff --git a/test/pending/neg/macro-invalidusage-badbounds-b.flags b/test/pending/neg/macro-invalidusage-badbounds-b.flags
deleted file mode 100644
index cd66464f2f..0000000000
--- a/test/pending/neg/macro-invalidusage-badbounds-b.flags
+++ /dev/null
@@ -1 +0,0 @@
--language:experimental.macros \ No newline at end of file
diff --git a/test/pending/neg/macro-invalidusage-badbounds-b/Impls_1.scala b/test/pending/neg/macro-invalidusage-badbounds-b/Impls_1.scala
deleted file mode 100644
index be47d5cec4..0000000000
--- a/test/pending/neg/macro-invalidusage-badbounds-b/Impls_1.scala
+++ /dev/null
@@ -1,5 +0,0 @@
-import scala.reflect.macros.blackbox.Context
-
-object Impls {
- def foo[U <: String](c: Context) = ???
-}
diff --git a/test/pending/neg/macro-invalidusage-badbounds-b/Macros_Test_2.scala b/test/pending/neg/macro-invalidusage-badbounds-b/Macros_Test_2.scala
deleted file mode 100644
index 3139599108..0000000000
--- a/test/pending/neg/macro-invalidusage-badbounds-b/Macros_Test_2.scala
+++ /dev/null
@@ -1,8 +0,0 @@
-object Macros {
- def foo[U <: String] = macro Impls.foo[U]
-}
-
-object Test extends App {
- import Macros._
- foo[Int]
-} \ No newline at end of file
diff --git a/test/pending/neg/reify_packed.check b/test/pending/neg/reify_packed.check
deleted file mode 100644
index f26b902896..0000000000
--- a/test/pending/neg/reify_packed.check
+++ /dev/null
@@ -1,4 +0,0 @@
-reify_packed.scala:6: error: implementation restriction: cannot reify block of type List[_$1] that involves a type declared inside the block being reified. consider casting the return value to a suitable type.
- reify {
- ^
-one error found
diff --git a/test/pending/neg/reify_packed.scala b/test/pending/neg/reify_packed.scala
deleted file mode 100644
index 7bdaa41915..0000000000
--- a/test/pending/neg/reify_packed.scala
+++ /dev/null
@@ -1,15 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.reflect.runtime.{universe => ru}
-import scala.reflect.runtime.{currentMirror => cm}
-import scala.tools.reflect.ToolBox
-
-object Test extends App {
- reify {
- class C { override def toString() = "C" }
- val ret = List((new C, new C))
- ret.asInstanceOf[List[_]]
- };
-
- val toolbox = cm.mkToolBox()
- println(toolbox.eval(code.tree))
-} \ No newline at end of file
diff --git a/test/pending/neg/t0653.scala b/test/pending/neg/t0653.scala
deleted file mode 100644
index 26204a8b40..0000000000
--- a/test/pending/neg/t0653.scala
+++ /dev/null
@@ -1,30 +0,0 @@
-// What is this test in place to test for?
-//
-class One[A]
-class Two[A, B]
-class Fix[Op[A]](x : Op[Fix[Op]])
-
-class FixTest {
- // works
- // val zero = new Fix[One](new One)
-
- // don't work:
- val two = new Fix(new Two) // this was what I found here
- val zero = new Fix(new One) // this seems like something which could plausibly work
-
- // neg/t0653.scala:12: error: no type parameters for constructor Fix: (x: Op[Fix[Op[A]]])Fix[Op[A]] exist so that it can be applied to arguments (Two[Nothing,Nothing])
- // --- because ---
- // argument expression's type is not compatible with formal parameter type;
- // found : Two[Nothing,Nothing]
- // required: ?Op[ Fix[?Op[ A ]] ]
- // val two = new Fix(new Two) // this was what I found here
- // ^
- // neg/t0653.scala:13: error: no type parameters for constructor Fix: (x: Op[Fix[Op[A]]])Fix[Op[A]] exist so that it can be applied to arguments (One[Nothing])
- // --- because ---
- // argument expression's type is not compatible with formal parameter type;
- // found : One[Nothing]
- // required: ?Op[ Fix[?Op[ A ]] ]
- // val zero = new Fix(new One) // this seems like something which could plausibly work
- // ^
- // two errors found
-}
diff --git a/test/pending/neg/t1557.scala b/test/pending/neg/t1557.scala
deleted file mode 100644
index ba93b45fad..0000000000
--- a/test/pending/neg/t1557.scala
+++ /dev/null
@@ -1,18 +0,0 @@
-object Test extends App {
- trait A
- trait B extends A
-
- trait C {
- trait D { type T >: B <: A }
- val y: (D with this.type)#T = new B { }
- }
-
- class D extends C {
- trait E
- type T = E
- def frob(arg : E) : E = arg
- frob(y)
- }
-
- new D
-} \ No newline at end of file
diff --git a/test/pending/neg/t1800.scala b/test/pending/neg/t1800.scala
deleted file mode 100644
index eebbbad9c7..0000000000
--- a/test/pending/neg/t1800.scala
+++ /dev/null
@@ -1,28 +0,0 @@
-object ObjectHolder {
- private[ObjectHolder] class PrivateObject
- def getPrivateObject = new PrivateObject
-}
-
-object Test {
- def main(args: Array[String]) {
- // compiler error: class PrivateObject cannot be accessed
- // in object test.ObjectHolder
- val a: ObjectHolder.PrivateObject = ObjectHolder.getPrivateObject
-
- // works fine
- val b = ObjectHolder.getPrivateObject
- println(b.getClass)
- }
-}
-/*
-When declaring objects as private[package/object] or protected[package/object] it is possible to leak out references to these objects into the public api (can be desirable, this in itself is not a problem).
-
-When users of the api receive such private object via a function call, they can create a variable to reference the private object using inferred typing:
-
-val b = getPrivateObject()
-
-However they cannot create such variable using declared typing:
-
-val a: PrivateObject? = getPrivateObject()
-
-The line above will generate a compiler error: "class PrivateObject? cannot be accessed". Which makes sense, because PrivateObject? was declared private. But in this case inferred typing should not work either, otherwise the behaviors of inferred typing and declared typing become inconsistent. */
diff --git a/test/pending/neg/t2080.scala b/test/pending/neg/t2080.scala
deleted file mode 100644
index 3f4306c091..0000000000
--- a/test/pending/neg/t2080.scala
+++ /dev/null
@@ -1,17 +0,0 @@
-trait A {
- type T
- def f(x : T) : T
-}
-
-trait B extends A {
- trait T { }
- override def f(x : T) : T = x
-}
-
-object C extends B {
- override trait T {
- def g { }
- }
- override def f(x : T) : T = { x.g; x }
-}
-//It compiles without errors, but T in B and T in C are completely unrelated types.
diff --git a/test/pending/neg/t3152.scala b/test/pending/neg/t3152.scala
deleted file mode 100644
index 3abc772076..0000000000
--- a/test/pending/neg/t3152.scala
+++ /dev/null
@@ -1,8 +0,0 @@
-package test
-
-object NotEnclosing {
- def main(args : Array[String]) : Unit = {}
- def compare[T](x: Ordered[T], y: Ordered[T]) = error("")
- def mkEx: Ordered[_] = error("")
- compare(mkEx, mkEx)
-}
diff --git a/test/pending/neg/t3633/test/Test.scala b/test/pending/neg/t3633/test/Test.scala
deleted file mode 100644
index 395a6be6f4..0000000000
--- a/test/pending/neg/t3633/test/Test.scala
+++ /dev/null
@@ -1,23 +0,0 @@
-package test
-
-final class Test extends PackageProtected {
- def bar = foo
-}
-
-package another {
- object Main {
- def t1(t: Test) {
- // Can always be replicated.
- println(t.foo)
- }
- def t2(t: Test) {
- // Conditions to replicate: must use -optimise, class Test must be final
- println(t.bar)
- //@noinline is a usable workaround
- }
- def main(args: Array[String]) {
- t1(new Test)
- t2(new Test)
- }
- }
-}
diff --git a/test/pending/neg/t5008.scala b/test/pending/neg/t5008.scala
deleted file mode 100644
index 2b20bcfe12..0000000000
--- a/test/pending/neg/t5008.scala
+++ /dev/null
@@ -1,165 +0,0 @@
-// These are members of class bar.C, completely unrelated to class foo.A.
-// The types shown below include types defined within foo.A which are:
-//
-// - qualified private
-// - qualified protected
-// - object protected
-//
-// val a : foo.A = { /* compiled code */ }
-// val xprot1 : java.lang.Object with foo.A.FooProt1 = { /* compiled code */ }
-// val xprot2 : java.lang.Object with foo.A.FooProt2 = { /* compiled code */ }
-// val xprot3 : java.lang.Object with foo.A.FooProt3 = { /* compiled code */ }
-// val xprot4 : java.lang.Object with foo.A.FooProt4 = { /* compiled code */ }
-// val xpriv3 : java.lang.Object with foo.A.FooPriv3 = { /* compiled code */ }
-// val xpriv4 : java.lang.Object with foo.A.FooPriv4 = { /* compiled code */ }
-//
-// Indeed it will tell me a type which I cannot access:
-//
-// scala> new bar.C
-// res0: bar.C = bar.C@1339a0dc
-//
-// scala> res0.xpriv3
-// res1: java.lang.Object with res0.a.FooPriv3 = bar.C$$anon$29@39556aec
-//
-// scala> new res0.a.FooPriv3
-// <console>:9: error: trait FooPriv3 in class A cannot be accessed in foo.A
-// new res0.a.FooPriv3
-// ^
-// Looking at how the compiler prints the types of those vals, one
-// develops a suspicion how some of it is being allowed:
-//
-// val xpriv4: C.this.a.FooPriv4
-// val xpriv3: C.this.a.FooPriv3
-// val xprot4: C.this.a.FooProt4
-// val xprot3: C.this.a.FooProt3
-// val xprot2: C.this.a.FooProt2
-// val xprot1: C.this.a.FooProt1
-//
-// That is, "this" is in the prefix somewhere, it's just not a "this"
-// which has any bearing.
-
-package foo {
- class A {
- trait Foo
-
- protected trait FooProt1
- protected[this] trait FooProt2
- protected[foo] trait FooProt3
- protected[A] trait FooProt4
-
- private trait FooPriv1
- private[this] trait FooPriv2
- private[foo] trait FooPriv3
- private[A] trait FooPriv4
-
- type BarProt1 = FooProt1
- type BarProt2 = FooProt2
- type BarProt3 = FooProt3
- type BarProt4 = FooProt4
-
- // type BarPriv1 = FooPriv1
- // type BarPriv2 = FooPriv2
- type BarPriv3 = FooPriv3
- type BarPriv4 = FooPriv4
-
- def fprot1(x: FooProt1) = x
- def fprot2(x: FooProt2) = x
- def fprot3(x: FooProt3) = x
- def fprot4(x: FooProt4) = x
-
- // def fpriv1(x: FooPriv1) = x
- // def fpriv2(x: FooPriv2) = x
- def fpriv3(x: FooPriv3) = x
- def fpriv4(x: FooPriv4) = x
-
- val yprot1 = new FooProt1 { }
- val yprot2 = new FooProt2 { }
- val yprot3 = new FooProt3 { }
- val yprot4 = new FooProt4 { }
-
- // val ypriv1 = new FooPriv1 { }
- // val ypriv2 = new FooPriv2 { }
- val ypriv3 = new FooPriv3 { }
- val ypriv4 = new FooPriv4 { }
-
- def fpriv_alt1(x: FooPriv1) = 0 // !!! isn't the private type now in the signature of the (public) method?
- def fpriv_alt2(x: FooPriv2) = 0 // !!! isn't the private[this] type now in the signature of the (public) method?
- }
- // Same package, subclass
- class B extends A {
- val xprot1 = new BarProt1 { }
- val xprot2 = new BarProt2 { }
- val xprot3 = new BarProt3 { }
- val xprot4 = new BarProt4 { }
-
- // val xpriv1 = new BarPriv1 { }
- // val xpriv2 = new BarPriv2 { }
- val xpriv3 = new BarPriv3 { }
- val xpriv4 = new BarPriv4 { }
-
- override def fprot1(x: BarProt1) = x
- override def fprot2(x: BarProt2) = x
- override def fprot3(x: BarProt3) = x
- override def fprot4(x: BarProt4) = x
-
- // override def fpriv1(x: BarPriv1) = x
- // override def fpriv2(x: BarPriv2) = x
- override def fpriv3(x: BarPriv3) = x
- override def fpriv4(x: BarPriv4) = x
- }
- // Same package, unrelated class
- class C {
- val a = new A
- import a._
-
- val xprot1 = new BarProt1 { }
- val xprot2 = new BarProt2 { }
- val xprot3 = new BarProt3 { }
- val xprot4 = new BarProt4 { }
-
- // val xpriv1 = new BarPriv1 { }
- // val xpriv2 = new BarPriv2 { }
- val xpriv3 = new BarPriv3 { }
- val xpriv4 = new BarPriv4 { }
- }
-}
-
-package bar {
- // Different package, subclass
- class B extends foo.A {
- val xprot1 = new BarProt1 { }
- val xprot2 = new BarProt2 { }
- val xprot3 = new BarProt3 { }
- val xprot4 = new BarProt4 { }
-
- // val xpriv1 = new BarPriv1 { }
- // val xpriv2 = new BarPriv2 { }
- val xpriv3 = new BarPriv3 { }
- val xpriv4 = new BarPriv4 { }
-
- override def fprot1(x: BarProt1) = x
- override def fprot2(x: BarProt2) = x
- override def fprot3(x: BarProt3) = x
- override def fprot4(x: BarProt4) = x
-
- // override def fpriv1(x: BarPriv1) = x
- // override def fpriv2(x: BarPriv2) = x
- override def fpriv3(x: BarPriv3) = x
- override def fpriv4(x: BarPriv4) = x
- }
- // Different package, unrelated class
- class C {
- val a = new foo.A
- import a._
-
- val xprot1 = new BarProt1 { }
- val xprot2 = new BarProt2 { }
- val xprot3 = new BarProt3 { }
- val xprot4 = new BarProt4 { }
-
- // val xpriv1 = new BarPriv1 { }
- // val xpriv2 = new BarPriv2 { }
- val xpriv3 = new BarPriv3 { }
- val xpriv4 = new BarPriv4 { }
- }
-}
diff --git a/test/pending/neg/t5589neg.check b/test/pending/neg/t5589neg.check
deleted file mode 100644
index f1dad94df3..0000000000
--- a/test/pending/neg/t5589neg.check
+++ /dev/null
@@ -1,37 +0,0 @@
-t5589neg.scala:2: warning: `withFilter' method does not yet exist on scala.util.Either.RightProjection[Int,String], using `filter' method instead
- def f5(x: Either[Int, String]) = for ((y1, y2: String) <- x.right) yield ((y1, y2))
- ^
-t5589neg.scala:2: error: constructor cannot be instantiated to expected type;
- found : (T1, T2)
- required: String
- def f5(x: Either[Int, String]) = for ((y1, y2: String) <- x.right) yield ((y1, y2))
- ^
-t5589neg.scala:3: warning: `withFilter' method does not yet exist on scala.util.Either.RightProjection[Int,String], using `filter' method instead
- def f6(x: Either[Int, String]) = for ((y1, y2: Any) <- x.right) yield ((y1, y2))
- ^
-t5589neg.scala:3: error: constructor cannot be instantiated to expected type;
- found : (T1, T2)
- required: String
- def f6(x: Either[Int, String]) = for ((y1, y2: Any) <- x.right) yield ((y1, y2))
- ^
-t5589neg.scala:4: error: constructor cannot be instantiated to expected type;
- found : (T1,)
- required: (String, Int)
- def f7(x: Either[Int, (String, Int)]) = for (y1 @ Tuple1(y2) <- x.right) yield ((y1, y2))
- ^
-t5589neg.scala:4: error: not found: value y2
- def f7(x: Either[Int, (String, Int)]) = for (y1 @ Tuple1(y2) <- x.right) yield ((y1, y2))
- ^
-t5589neg.scala:5: error: constructor cannot be instantiated to expected type;
- found : (T1, T2, T3)
- required: (String, Int)
- def f8(x: Either[Int, (String, Int)]) = for ((y1, y2, y3) <- x.right) yield ((y1, y2))
- ^
-t5589neg.scala:5: error: not found: value y1
- def f8(x: Either[Int, (String, Int)]) = for ((y1, y2, y3) <- x.right) yield ((y1, y2))
- ^
-t5589neg.scala:5: error: not found: value y2
- def f8(x: Either[Int, (String, Int)]) = for ((y1, y2, y3) <- x.right) yield ((y1, y2))
- ^
-two warnings found
-7 errors found
diff --git a/test/pending/neg/t5589neg.flags b/test/pending/neg/t5589neg.flags
deleted file mode 100644
index dcc59ebe32..0000000000
--- a/test/pending/neg/t5589neg.flags
+++ /dev/null
@@ -1 +0,0 @@
--deprecation
diff --git a/test/pending/neg/t5589neg.scala b/test/pending/neg/t5589neg.scala
deleted file mode 100644
index 31ff2c3693..0000000000
--- a/test/pending/neg/t5589neg.scala
+++ /dev/null
@@ -1,6 +0,0 @@
-class A {
- def f5(x: Either[Int, String]) = for ((y1, y2: String) <- x.right) yield ((y1, y2))
- def f6(x: Either[Int, String]) = for ((y1, y2: Any) <- x.right) yield ((y1, y2))
- def f7(x: Either[Int, (String, Int)]) = for (y1 @ Tuple1(y2) <- x.right) yield ((y1, y2))
- def f8(x: Either[Int, (String, Int)]) = for ((y1, y2, y3) <- x.right) yield ((y1, y2))
-}
diff --git a/test/pending/neg/t5589neg2.check b/test/pending/neg/t5589neg2.check
deleted file mode 100644
index 6af4955a83..0000000000
--- a/test/pending/neg/t5589neg2.check
+++ /dev/null
@@ -1,9 +0,0 @@
-t5589neg2.scala:7: error: constructor cannot be instantiated to expected type;
- found : (T1, T2)
- required: String
- for (((((a, (b, (c, (d1, d2)))), es), fs), gs) <- x) yield (d :: es).mkString(", ") // not ok
- ^
-t5589neg2.scala:7: error: not found: value d
- for (((((a, (b, (c, (d1, d2)))), es), fs), gs) <- x) yield (d :: es).mkString(", ") // not ok
- ^
-two errors found
diff --git a/test/pending/neg/t5589neg2.scala b/test/pending/neg/t5589neg2.scala
deleted file mode 100644
index b7c7ab7218..0000000000
--- a/test/pending/neg/t5589neg2.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-class A {
- def f1(x: List[((((Int, (Double, (Float, String))), List[String]), List[Int]), List[Float])]) = {
- for (((((a, (b, (c, d))), es), fs), gs) <- x) yield (d :: es).mkString(", ") // ok
- }
-
- def f2(x: List[((((Int, (Double, (Float, String))), List[String]), List[Int]), List[Float])]) = {
- for (((((a, (b, (c, (d1, d2)))), es), fs), gs) <- x) yield (d :: es).mkString(", ") // not ok
- }
-
- def f3(x: List[((((Int, (Double, (Float, String))), List[String]), List[Int]), List[Float])]) = {
- for (((((a, (b, _)), es), fs), gs) <- x) yield (es ::: fs).mkString(", ") // ok
- }
-} \ No newline at end of file
diff --git a/test/pending/neg/t5618.check b/test/pending/neg/t5618.check
deleted file mode 100644
index 118e812ae4..0000000000
--- a/test/pending/neg/t5618.check
+++ /dev/null
@@ -1,7 +0,0 @@
-t5618.scala:12: error: could not find implicit value for parameter class1: Class1
- val class2 = new Class2
- ^
-t5618.scala:18: error: could not find implicit value for parameter class1: Class1
- val class2 = new Class2
- ^
-two errors found \ No newline at end of file
diff --git a/test/pending/neg/t5618.scala b/test/pending/neg/t5618.scala
deleted file mode 100644
index 66e06787f1..0000000000
--- a/test/pending/neg/t5618.scala
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-case class Class1
-
-
-case class Class2(implicit class1: Class1)
-
-
-object Test1 {
- val class2 = new Class2
- implicit val class1 = new Class1
-}
-
-
-object Test2 {
- val class2 = new Class2
- implicit val class1: Class1 = new Class1
-}
-
-
-object Test3 {
- implicit val class1 = new Class1
- val class2 = new Class2
-}
-
diff --git a/test/pending/neg/t5729.check b/test/pending/neg/t5729.check
deleted file mode 100644
index 10c13db8b6..0000000000
--- a/test/pending/neg/t5729.check
+++ /dev/null
@@ -1,7 +0,0 @@
-t5729.scala:5: error: ambiguous reference to overloaded definition,
-both method join in object Test of type [S](in: Seq[T[S]])String
-and method join in object Test of type (in: Seq[T[_]])Int
-match argument types (Seq[T[_]])
- join(null: Seq[T[_]])
- ^
-one error found
diff --git a/test/pending/neg/t5729.scala b/test/pending/neg/t5729.scala
deleted file mode 100644
index 9fd9c9ffbb..0000000000
--- a/test/pending/neg/t5729.scala
+++ /dev/null
@@ -1,6 +0,0 @@
-trait T[X]
-object Test {
- def join(in: Seq[T[_]]): Int = ???
- def join[S](in: Seq[T[S]]): String = ???
- join(null: Seq[T[_]])
-} \ No newline at end of file
diff --git a/test/pending/neg/t6375.check b/test/pending/neg/t6375.check
deleted file mode 100644
index 89d7d8060f..0000000000
--- a/test/pending/neg/t6375.check
+++ /dev/null
@@ -1,27 +0,0 @@
-t6375.scala:6: warning: no valid targets for annotation on value x1 - it is discarded unused. You may specify targets with meta-annotations, e.g. @(Bippy @getter)
- @Bippy val x1: Int // warn
- ^
-t6375.scala:7: warning: no valid targets for annotation on value x2 - it is discarded unused. You may specify targets with meta-annotations, e.g. @(Bippy @scala.annotation.meta.field @getter)
- @(Bippy @field) val x2: Int // warn
- ^
-t6375.scala:9: warning: no valid targets for annotation on value x4 - it is discarded unused. You may specify targets with meta-annotations, e.g. @(Bippy @scala.annotation.meta.setter @getter)
- @(Bippy @setter) val x4: Int // warn
- ^
-t6375.scala:10: warning: no valid targets for annotation on value x5 - it is discarded unused. You may specify targets with meta-annotations, e.g. @(Bippy @scala.annotation.meta.param @getter)
- @(Bippy @param) val x5: Int // warn
- ^
-t6375.scala:20: warning: no valid targets for annotation on value q1 - it is discarded unused. You may specify targets with meta-annotations, e.g. @(Bippy @scala.annotation.meta.getter @field)
- @(Bippy @getter) private[this] val q1: Int = 1 // warn
- ^
-t6375.scala:40: warning: no valid targets for annotation on value p2 - it is discarded unused. You may specify targets with meta-annotations, e.g. @(Bippy @scala.annotation.meta.getter @param)
- @(Bippy @getter) p2: Int, // warn
- ^
-t6375.scala:41: warning: no valid targets for annotation on value p3 - it is discarded unused. You may specify targets with meta-annotations, e.g. @(Bippy @scala.annotation.meta.setter @param)
- @(Bippy @setter) p3: Int, // warn
- ^
-t6375.scala:42: warning: no valid targets for annotation on value p4 - it is discarded unused. You may specify targets with meta-annotations, e.g. @(Bippy @scala.annotation.meta.field @param)
- @(Bippy @field) p4: Int // warn
- ^
-error: No warnings can be incurred under -Xfatal-warnings.
-8 warnings found
-one error found
diff --git a/test/pending/neg/t6375.flags b/test/pending/neg/t6375.flags
deleted file mode 100644
index 85d8eb2ba2..0000000000
--- a/test/pending/neg/t6375.flags
+++ /dev/null
@@ -1 +0,0 @@
--Xfatal-warnings
diff --git a/test/pending/neg/t6375.scala b/test/pending/neg/t6375.scala
deleted file mode 100644
index 21634df688..0000000000
--- a/test/pending/neg/t6375.scala
+++ /dev/null
@@ -1,67 +0,0 @@
-import scala.annotation.meta._
-
-class Bippy extends scala.annotation.StaticAnnotation
-
-abstract class Foo {
- @Bippy val x1: Int // warn
- @(Bippy @field) val x2: Int // warn
- @(Bippy @getter) val x3: Int // no warn
- @(Bippy @setter) val x4: Int // warn
- @(Bippy @param) val x5: Int // warn
-}
-
-object Bar extends Foo {
- val x1 = 1
- val x2 = 2
- val x3 = 3
- val x4 = 4
- val x5 = 5
-
- @(Bippy @getter) private[this] val q1: Int = 1 // warn
- @(Bippy @getter) private val q2: Int = 1 // no warn
-
- def f1(@(Bippy @param) x: Int): Int = 0 // no warn
- def f2(@(Bippy @getter) x: Int): Int = 0 // warn - todo
- def f3(@(Bippy @setter) x: Int): Int = 0 // warn - todo
- def f4(@(Bippy @field) x: Int): Int = 0 // warn - todo
- def f5(@Bippy x: Int): Int = 0 // no warn
-
- @(Bippy @companionClass) def g1(x: Int): Int = 0 // warn - todo
- @(Bippy @companionObject) def g2(x: Int): Int = 0 // warn - todo
- @(Bippy @companionMethod) def g3(x: Int): Int = 0 // no warn
- @Bippy def g4(x: Int): Int = 0 // no warn
-
- @(Bippy @companionObject @companionMethod) def g5(x: Int): Int = 0 // no warn
-}
-
-class Dingo(
- @Bippy p0: Int, // no warn
- @(Bippy @param) p1: Int, // no warn
- @(Bippy @getter) p2: Int, // warn
- @(Bippy @setter) p3: Int, // warn
- @(Bippy @field) p4: Int // warn
-)
-
-class ValDingo(
- @Bippy val p0: Int, // no warn
- @(Bippy @param) val p1: Int, // no warn
- @(Bippy @getter) val p2: Int, // no warn
- @(Bippy @setter) val p3: Int, // warn - todo
- @(Bippy @field) val p4: Int // no warn
-)
-
-class VarDingo(
- @Bippy var p0: Int, // no warn
- @(Bippy @param) var p1: Int, // no warn
- @(Bippy @getter) var p2: Int, // no warn
- @(Bippy @setter) var p3: Int, // no warn
- @(Bippy @field) var p4: Int // no warn
-)
-
-case class CaseDingo(
- @Bippy p0: Int, // no warn
- @(Bippy @param) p1: Int, // no warn
- @(Bippy @getter) p2: Int, // no warn
- @(Bippy @setter) p3: Int, // warn - todo
- @(Bippy @field) p4: Int // no warn
-)
diff --git a/test/pending/neg/t7441.check b/test/pending/neg/t7441.check
deleted file mode 100644
index f259457197..0000000000
--- a/test/pending/neg/t7441.check
+++ /dev/null
@@ -1,6 +0,0 @@
-t7441.scala:4: error: type mismatch;
- found : Int(1)
- required: List[Any]
- def test = apply(1)
- ^
-one error found
diff --git a/test/pending/neg/t7441.scala b/test/pending/neg/t7441.scala
deleted file mode 100644
index dad7421e3f..0000000000
--- a/test/pending/neg/t7441.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-object Test {
- object Bar {
- def apply(xs: List[Any]): Int = 0
- def test = apply(1)
- }
- implicit def foo = 1
-}
diff --git a/test/pending/neg/t7886.scala b/test/pending/neg/t7886.scala
deleted file mode 100644
index 55d80a0a43..0000000000
--- a/test/pending/neg/t7886.scala
+++ /dev/null
@@ -1,22 +0,0 @@
-trait Covariant[+A]
-trait Contra[-A] { def accept(p: A): Unit }
-trait Invariant[A] extends Covariant[A] with Contra[A]
-
-case class Unravel[A](m: Contra[A], msg: A)
-
-object Test extends Covariant[Any] {
- def g(m: Contra[Any]): Unit = m accept 5
- def f(x: Any): Unit = x match {
- case Unravel(m, msg) => g(m)
- case _ =>
- }
- def main(args: Array[String]) {
- f(Unravel[String](new Contra[String] { def accept(x: String) = x.length }, ""))
- }
-}
-// java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
-// at Test$$anon$1.accept(a.scala:18)
-// at Test$.g(a.scala:13)
-// at Test$.f(a.scala:15)
-// at Test$.main(a.scala:18)
-// at Test.main(a.scala)
diff --git a/test/pending/neg/t7886b.scala b/test/pending/neg/t7886b.scala
deleted file mode 100644
index 1db8be9821..0000000000
--- a/test/pending/neg/t7886b.scala
+++ /dev/null
@@ -1,23 +0,0 @@
-trait Covariant[+A]
-trait Contra[-A] { def accept(p: A): Unit }
-trait Invariant[A] extends Covariant[A] with Contra[A]
-
-trait T
-case class Unravel[A](m: Contra[A], msg: A) extends T
-
-object Test extends Covariant[Any] {
- def g(m: Contra[Any]): Unit = m accept 5
- def f(x: T): Unit = x match {
- case Unravel(m, msg) => g(m)
- case _ =>
- }
- def main(args: Array[String]) {
- f(Unravel[String](new Contra[String] { def accept(x: String) = x.length }, ""))
- }
-}
-// java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
-// at Test$$anon$1.accept(a.scala:18)
-// at Test$.g(a.scala:13)
-// at Test$.f(a.scala:15)
-// at Test$.main(a.scala:18)
-// at Test.main(a.scala)
diff --git a/test/pending/neg/t8079d.check b/test/pending/neg/t8079d.check
deleted file mode 100644
index f63f4902f8..0000000000
--- a/test/pending/neg/t8079d.check
+++ /dev/null
@@ -1,4 +0,0 @@
-t8079d.scala:3: error: contravariant type I occurs in covariant position in type C.this.X of value b
- def f2(b: X): Unit
- ^
-one error found
diff --git a/test/pending/neg/t8079d.scala b/test/pending/neg/t8079d.scala
deleted file mode 100644
index ad420b99e3..0000000000
--- a/test/pending/neg/t8079d.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-trait C[-I] {
- protected[this] type X = C[I]
- def f2(b: X): Unit
-}
diff --git a/test/pending/neg/tcpoly_typealias_eta.scala b/test/pending/neg/tcpoly_typealias_eta.scala
deleted file mode 100644
index 033c911f7c..0000000000
--- a/test/pending/neg/tcpoly_typealias_eta.scala
+++ /dev/null
@@ -1,46 +0,0 @@
-trait A {
- type m[+x]
-}
-
-trait A2 {
- type m[+x <: String]
-}
-
-trait A3 {
- type m[x]
-}
-
-trait FooCov[+x]
-trait FooCon[-x]
-trait FooBound[+x <: String]
-
-trait BOk1 extends A {
- type m/*[+x]*/ = FooCov/*[x]*/
-}
-
-trait BOk2 extends A2 {
- type m/*[+x <: String]*/ = FooBound/*[x]*/
-}
-
-trait BOk3 extends A2 {
- type m/*[+x]*/ = FooCov/*[x]*/ // weaker bound
-}
-
-trait BOk4 extends A3 {
- type m/*[+x]*/ = FooCov/*[x]*/ // weaker variance
-}
-
-// there are two aspects to check:
- // does type alias signature (not considering RHS) correspond to abstract type member in super class
- // does RHS correspond to the type alias sig
-trait BInv extends A{
- type m/*[x]*/ = FooCov/*[x]*/ // error: invariant x in alias def
-}
-
-trait BCon extends A{
- type m/*[-x]*/ = FooCon/*[x]*/ // error: contravariant x
-}
-
-trait BBound extends A{
- type m/*[+x <: String]*/ = FooBound/*[x]*/ // error: x with stricter bound
-}
diff --git a/test/pending/neg/tcpoly_variance_enforce_getter_setter.scala b/test/pending/neg/tcpoly_variance_enforce_getter_setter.scala
deleted file mode 100644
index deafba8d8a..0000000000
--- a/test/pending/neg/tcpoly_variance_enforce_getter_setter.scala
+++ /dev/null
@@ -1,12 +0,0 @@
-trait coll[+m[+x]]
-
-class FooInvar[x]
-class FooContra[-x]
-class FooCov[+x]
-
-object test {
- var ok: coll[FooCov] = _
-
- var x: coll[FooInvar] = _ // TODO: error should be reported only once instead of separately for getter and setter
- var y: coll[FooContra] = _
-}
diff --git a/test/pending/neg/type-diagnostics.scala b/test/pending/neg/type-diagnostics.scala
deleted file mode 100644
index a3a9172bb2..0000000000
--- a/test/pending/neg/type-diagnostics.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-object TooManyParens {
- def f = Map(1 -> 2).keySet()
- //
- // Confusion reigns!
- //
- // work/a.scala:27: error: not enough arguments for method apply: (elem: Int)Boolean in trait SetLike.
- // Unspecified value parameter elem.
- // def f = Map(1 -> 2).keySet()
- // ^
-
-}
diff --git a/test/pending/pos/bug4704.scala b/test/pending/pos/bug4704.scala
deleted file mode 100644
index 6af719adf7..0000000000
--- a/test/pending/pos/bug4704.scala
+++ /dev/null
@@ -1,36 +0,0 @@
-trait Bar {
- def f1 = super.hashCode
- def f2 = super[Object].hashCode
- def f3 = super[ScalaObject].hashCode
-
- override def hashCode = 1
-}
-trait Barzoo {
- def g1 = super.hashCode
- def g2 = super[Object].hashCode
- def g3 = super[ScalaObject].hashCode
-
- override def hashCode = 2
-}
-
-trait Foo extends Bar with Barzoo {
- def f4 = super.hashCode
- def f5 = super[Object].hashCode
- def f6 = super[ScalaObject].hashCode
- def f6b = super[Bar].hashCode
- def g4 = super[Barzoo].hashCode
-
- override def hashCode = super[Bar].hashCode + super[Barzoo].hashCode
-}
-
-class Quux extends Foo {
- override def hashCode = super.hashCode + super[Object].hashCode + super[ScalaObject].hashCode + super[Foo].hashCode
-}
-
-trait Borp extends Quux {
- def f12 = super.hashCode
- def f14 = super[ScalaObject].hashCode
- def f15 = super[Quux].hashCode
- override def hashCode = super[Quux].hashCode
-}
-
diff --git a/test/pending/pos/inference.scala b/test/pending/pos/inference.scala
deleted file mode 100644
index ee462b6bcc..0000000000
--- a/test/pending/pos/inference.scala
+++ /dev/null
@@ -1,41 +0,0 @@
-import scala.reflect.runtime.universe._
-
-// inference illuminator
-object Test {
- class D1[T1 : TypeTag, T2 <: T1 : TypeTag](x: T1) { println(typeOf[(T1, T2)]) }
- class D2[T1 : TypeTag, T2 >: T1 : TypeTag](x: T1) { println(typeOf[(T1, T2)]) }
- class D3[+T1 : TypeTag, T2 <: T1 : TypeTag](x: T1) { println(typeOf[(T1, T2)]) }
- class D4[-T1 : TypeTag, T2 >: T1 : TypeTag](x: T1) { println(typeOf[(T1, T2)]) }
-
- class E1[T1 : TypeTag, T2 <: T1 : TypeTag](x: D1[T1, T2]) { println(typeOf[(T1, T2)]) }
- class E2[T1 : TypeTag, T2 >: T1 : TypeTag](x: D2[T1, T2]) { println(typeOf[(T1, T2)]) }
- class E3[+T1 : TypeTag, T2 <: T1 : TypeTag](x: D3[T1, T2]) { println(typeOf[(T1, T2)]) }
- class E4[-T1 : TypeTag, T2 >: T1 : TypeTag](x: D4[T1, T2]) { println(typeOf[(T1, T2)]) }
-
- def main(args: Array[String]): Unit = {
- // WHY YOU NO LIKE NOTHING SO MUCH SCALAC?
- val d1 = new D1(5)
- val d2 = new D2(5)
- val d3 = new D3(5)
- val d4 = new D4(5)
-
- new E1(d1) // fails
- new E2(d2)
- new E3(d3) // fails
- new E4(d4)
- }
- // found : Test.D1[Int,Nothing]
- // required: Test.D1[Int,T2]
- // Note: Nothing <: T2, but class D1 is invariant in type T2.
- // You may wish to define T2 as +T2 instead. (SLS 4.5)
- // new E1(d1)
- // ^
- // test/pending/pos/inference.scala:22: error: type mismatch;
- // found : Test.D3[Int,Nothing]
- // required: Test.D3[Int,T2]
- // Note: Nothing <: T2, but class D3 is invariant in type T2.
- // You may wish to define T2 as +T2 instead. (SLS 4.5)
- // new E3(d3)
- // ^
- // two errors found
-} \ No newline at end of file
diff --git a/test/pending/pos/misc/A.java b/test/pending/pos/misc/A.java
deleted file mode 100644
index 8eaa341151..0000000000
--- a/test/pending/pos/misc/A.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package test;
-
-import static test.A.STATE.UNDEF;
-
-class A {
-
- public STATE state = UNDEF;
-
- protected static enum STATE {
- UNDEF
- }
-
-}
diff --git a/test/pending/pos/misc/B.scala b/test/pending/pos/misc/B.scala
deleted file mode 100644
index afc30944f5..0000000000
--- a/test/pending/pos/misc/B.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-package test
-
-class B {
-
- def myA = new A()
-
-}
diff --git a/test/pending/pos/misc/J.java b/test/pending/pos/misc/J.java
deleted file mode 100644
index 4805791154..0000000000
--- a/test/pending/pos/misc/J.java
+++ /dev/null
@@ -1,4 +0,0 @@
-class J {
- void f (@Override{ name = value } int x) {}
- void g (String ... x) {}
-}
diff --git a/test/pending/pos/misc/S.scala b/test/pending/pos/misc/S.scala
deleted file mode 100644
index c5bfb26f18..0000000000
--- a/test/pending/pos/misc/S.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-object Test extends J {
- def h(xs: String*) {}
- g("a", "b", "c")
-}
diff --git a/test/pending/pos/no-widen-locals.flags b/test/pending/pos/no-widen-locals.flags
deleted file mode 100644
index 85d8eb2ba2..0000000000
--- a/test/pending/pos/no-widen-locals.flags
+++ /dev/null
@@ -1 +0,0 @@
--Xfatal-warnings
diff --git a/test/pending/pos/no-widen-locals.scala b/test/pending/pos/no-widen-locals.scala
deleted file mode 100644
index 013e63f0a2..0000000000
--- a/test/pending/pos/no-widen-locals.scala
+++ /dev/null
@@ -1,19 +0,0 @@
-// Worked from r23262 until that was reverted somewhere
-// around r25016.
-import annotation.switch
-
-object Test {
- def f(x: Int) = {
- val X1 = 5
- val X2 = 10
- val X3 = 15
- val X4 = 20
-
- (x: @switch) match {
- case X1 => 1
- case X2 => 2
- case X3 => 3
- case X4 => 4
- }
- }
-}
diff --git a/test/pending/pos/nothing.scala b/test/pending/pos/nothing.scala
deleted file mode 100644
index f76017fb16..0000000000
--- a/test/pending/pos/nothing.scala
+++ /dev/null
@@ -1,24 +0,0 @@
-// More shoddy treatment for nothing.
-class A {
- class Q3A[+T1, T2 <: T1](x: T1)
- class Q3B[+T1, T2 <: T1](x: Q3A[T1, T2])
-
- val x1 = new Q3B(new Q3A("a"))
- val x2 = new Q3B(new Q3A[String, Nothing]("a"))
- val x3 = new Q3B(new Q3A[String, Null]("a"))
- // test/pending/pos/nothing.scala:5: error: type mismatch;
- // found : A.this.Q3A[String,Nothing]
- // required: A.this.Q3A[String,T2]
- // Note: Nothing <: T2, but class Q3A is invariant in type T2.
- // You may wish to define T2 as +T2 instead. (SLS 4.5)
- // val x1 = new Q3B(new Q3A("a"))
- // ^
- // test/pending/pos/nothing.scala:6: error: type mismatch;
- // found : A.this.Q3A[String,Nothing]
- // required: A.this.Q3A[String,T2]
- // Note: Nothing <: T2, but class Q3A is invariant in type T2.
- // You may wish to define T2 as +T2 instead. (SLS 4.5)
- // val x2 = new Q3B(new Q3A[String, Nothing]("a"))
- // ^
- // two errors found
-}
diff --git a/test/pending/pos/overloading-boundaries.scala b/test/pending/pos/overloading-boundaries.scala
deleted file mode 100644
index d2e9fdbb12..0000000000
--- a/test/pending/pos/overloading-boundaries.scala
+++ /dev/null
@@ -1,37 +0,0 @@
-package bar {
- object bippy extends (Double => String) {
- def apply(x: Double): String = "Double"
- }
-}
-
-package object bar {
- def bippy(x: Int, y: Int, z: Int) = "(Int, Int, Int)"
-}
-
-object Test {
- def main(args: Array[String]): Unit = {
- println(bar.bippy(5.5d))
- println(bar.bippy(1, 2, 3))
- }
-}
-
-/****
-
-% scalac3 a.scala
-a.scala:13: error: not enough arguments for method bippy: (x: Int, y: Int, z: Int)String.
-Unspecified value parameters y, z.
- println(bar.bippy(5.5d))
- ^
-one error found
-
-# Comment out the call to bar.bippy(5.5d) - compiles
-% scalac3 a.scala
-
-# Compiles only from pure source though - if classes are present, fails.
-% scalac3 a.scala
-a.scala:2: error: bippy is already defined as method bippy in package object bar
- object bippy extends (Double => String) {
- ^
-one error found
-
-****/
diff --git a/test/pending/pos/pattern-typing.scala b/test/pending/pos/pattern-typing.scala
deleted file mode 100644
index 7286cc38af..0000000000
--- a/test/pending/pos/pattern-typing.scala
+++ /dev/null
@@ -1,29 +0,0 @@
-import scala.language.higherKinds
-
-trait Bound[B]
-
-package p1 {
- case class Sub[B <: Bound[B]](p: B)
- object Test {
- def g[A](x: Bound[A]) = ()
- def f(x: Any) = x match { case Sub(p) => g(p) }
- }
-}
-
-package p2 {
- trait Traversable[+A] { def head: A = ??? }
- trait Seq[+A] extends Traversable[A] { def length: Int = ??? }
-
- case class SubHK[B <: Bound[B], CC[X] <: Traversable[X]](xs: CC[B])
- class MyBound extends Bound[MyBound]
- class MySeq extends Seq[MyBound]
-
- object Test {
- def g[B](x: Bound[B]) = ()
-
- def f1(x: Any) = x match { case SubHK(xs) => xs }
- def f2[B <: Bound[B], CC[X] <: Traversable[X]](sub: SubHK[B, CC]): CC[B] = sub match { case SubHK(xs) => xs }
- def f3 = g(f1(SubHK(new MySeq)).head)
- def f4 = g(f2(SubHK(new MySeq)).head)
- }
-}
diff --git a/test/pending/pos/sig/sigs.java b/test/pending/pos/sig/sigs.java
deleted file mode 100644
index ddf8ec45b0..0000000000
--- a/test/pending/pos/sig/sigs.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package test;
-class Test extends T {
- Inner i = new Inner();
- String x = foo("abc");
- String y = i.bar("abc");
-}
diff --git a/test/pending/pos/sig/sigs.scala b/test/pending/pos/sig/sigs.scala
deleted file mode 100644
index bdb72a09bb..0000000000
--- a/test/pending/pos/sig/sigs.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-package test
-class T {
- def foo[T <: String](x: T): T = x
- def bar[T](x: T): T = x
- class Inner {
- def foo[T](x: T): T = x
- def bar[T](x: T): T = x
- }
-}
-
diff --git a/test/pending/pos/sig/sigtest.scala b/test/pending/pos/sig/sigtest.scala
deleted file mode 100644
index 1d091390f7..0000000000
--- a/test/pending/pos/sig/sigtest.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends T with Application {
- val x: String = foo("abc")
-}
diff --git a/test/pending/pos/t0621.scala b/test/pending/pos/t0621.scala
deleted file mode 100644
index 1d2531c4bd..0000000000
--- a/test/pending/pos/t0621.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-object Test {
- val x1 : List[T] forSome { type T } = List(42)
- val w1 = x1 match { case y : List[u] => ((z : u) => z)(y.head) }
-
- val x2 : T forSome { type T } = 42
- val w2 = x2 match { case y : u => ((z : u) => z)(y) }
-}
diff --git a/test/pending/pos/t1336.scala b/test/pending/pos/t1336.scala
deleted file mode 100644
index 63967985c7..0000000000
--- a/test/pending/pos/t1336.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-object Foo {
- def foreach( f : ((Int,Int)) => Unit ) {
- println("foreach")
- f(1,2)
- }
-
- for( (a,b) <- this ) {
- println((a,b))
- }
-}
diff --git a/test/pending/pos/t1476.scala b/test/pending/pos/t1476.scala
deleted file mode 100644
index 1f8e95c28f..0000000000
--- a/test/pending/pos/t1476.scala
+++ /dev/null
@@ -1,23 +0,0 @@
-abstract class Module {
- def moduleDemands(): List[Module]
-}
-
-object Test {
- new Module { owner: Module =>
- def moduleDemands() = Nil
-
- val a = new Module { def moduleDemands(): List[Module] = Nil }
- val b = new Module { def moduleDemands(): List[Module] = owner :: c :: Nil }
- val c = new Module { def moduleDemands(): List[Module] = owner :: a :: Nil }
- }
-}
-
-object Test2 {
- new Module { owner =>
- def moduleDemands() = Nil
-
- val a = new Module { def moduleDemands(): List[Module] = Nil }
- val b = new Module { def moduleDemands(): List[Module] = owner :: c :: Nil }
- val c = new Module { def moduleDemands(): List[Module] = owner :: a :: Nil }
- }
-}
diff --git a/test/pending/pos/t1786.scala b/test/pending/pos/t1786.scala
deleted file mode 100644
index 16ce4301bc..0000000000
--- a/test/pending/pos/t1786.scala
+++ /dev/null
@@ -1,27 +0,0 @@
-/** This a consequence of the current type checking algorithm, where bounds are checked only after variables are instantiated.
- * I believe this will change once we go to constraint-based type inference.
- * Alternatively, we can pursue a more extensive fix to SI-6169
- *
- * The below code shows a compiler flaw in that the wildcard "_" as value for a bounded type parameter either
- * breaks the boundary - as it result in Any - or doesn't evaluate to the boundary (as I'd hoped it to be).
-*/
-
-class SomeClass(val intValue:Int)
-class MyClass[T <: SomeClass](val myValue:T)
-class Flooz[A >: Null <: SomeClass, T >: Null <: A](var value: T)
-
-class A {
- def f1(i:MyClass[_]) = i.myValue.intValue
- def f2(i:MyClass[_ <: SomeClass]) = i.myValue.intValue
- // def f3[T](i: MyClass[T]) = i.myValue.intValue
- def f4[T <: SomeClass](i: MyClass[T]) = i.myValue.intValue
- // def f5[T >: Null](i: MyClass[T]) = i.myValue.intValue
- // def f6[T >: Null <: String](i: MyClass[T]) = i.myValue.intValue + i.myValue.charAt(0)
-
- // def g1[A, T](x: Flooz[A, T]) = { x.value = null ; x.value.intValue }
- def g2(x: Flooz[_, _]) = { x.value = null ; x.value.intValue }
-
- class MyClass2(x: MyClass[_]) { val p = x.myValue.intValue }
- // class MyClass3[T <: String](x: MyClass[T]) { val p = x.myValue.intValue + x.myValue.length }
- // class MyClass4[T >: Null](x: MyClass[T]) { val p = x.myValue.intValue }
-}
diff --git a/test/pending/pos/t2071.scala b/test/pending/pos/t2071.scala
deleted file mode 100644
index a384cdfd3b..0000000000
--- a/test/pending/pos/t2071.scala
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * We still have to evaluate whether we will permit existentials
- * with cross type dependencies. My current reaction would be no.
- * Ticket stays open until a decision is made.
- */
-trait Iterable[+S]
-trait Box[U]
-
-trait A {
- type T <: Iterable[S] forSome { type S <: Box[U]; type U }
-}
-
-trait B extends A {
- type T <: Iterable[S] forSome { type S <: Box[U]; type U }
-}
-/*
-But according to SLS, 3.5.1 Type Equivalence: Two existential types (§3.2.10) are equivalent if they have the same number of quantifiers, and, after renaming one list of type quantifiers by another, the quantified types as well as lower and upper bounds of corresponding quantifiers are equivalent.
-
-So, every existential type must be equivalent to (and conform to) itself.
-Attachments
-*/
diff --git a/test/pending/pos/t2173.scala b/test/pending/pos/t2173.scala
deleted file mode 100644
index cf1913d88b..0000000000
--- a/test/pending/pos/t2173.scala
+++ /dev/null
@@ -1,12 +0,0 @@
-class A[+U >: Null] {
- type R[+X >: Null] = X
- type O[+X] = A[R[X]]
-}
-
-// with the following error:
-//
-// type arguments [A.this.R[X]] do not conform to class A's type parameter bounds [+U >: Null]
-//
-// However, because type R[+X>:Null] is identical to X, it should carry X bounds and R[X] lower bound should be known to be X's lower bound, i.e. Null.
-//
-// The same problem occurs with upper bounds.
diff --git a/test/pending/pos/t3943/Outer_1.java b/test/pending/pos/t3943/Outer_1.java
deleted file mode 100644
index 56c8cc7f85..0000000000
--- a/test/pending/pos/t3943/Outer_1.java
+++ /dev/null
@@ -1,14 +0,0 @@
-public class Outer_1<E> {
- abstract class Inner {
- abstract public void foo(E e);
- }
-}
-
-class Child extends Outer_1<String> {
- // the implicit prefix for Inner is Outer<E> instead of Outer<String>
- public Inner getInner() {
- return new Inner() {
- public void foo(String e) { System.out.println("meh "+e); }
- };
- }
-}
diff --git a/test/pending/pos/t3943/test_2.scala b/test/pending/pos/t3943/test_2.scala
deleted file mode 100644
index a19db8b226..0000000000
--- a/test/pending/pos/t3943/test_2.scala
+++ /dev/null
@@ -1,8 +0,0 @@
-object Test extends App {
- val x: Child = new Child
- x.getInner.foo("meh")
-// ^
-// error: type mismatch;
-// found : java.lang.String("meh")
-// required: E
-}
diff --git a/test/pending/pos/t4012.scala b/test/pending/pos/t4012.scala
deleted file mode 100644
index 9b8a1b0dbe..0000000000
--- a/test/pending/pos/t4012.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-trait C1[+A] {
- def head: A = sys.error("")
-}
-trait C2[@specialized +A] extends C1[A] {
- override def head: A = super.head
-}
-class C3 extends C2[Char] \ No newline at end of file
diff --git a/test/pending/pos/t4123.scala b/test/pending/pos/t4123.scala
deleted file mode 100644
index 82ab16b4e4..0000000000
--- a/test/pending/pos/t4123.scala
+++ /dev/null
@@ -1,14 +0,0 @@
-// /scala/trac/4123/a.scala
-// Sun Feb 19 00:08:53 PST 2012
-
-trait Iter[@specialized(Byte) +A] extends Iterator[A] {
- self =>
-
- override def map[B](f: (A) => B) = super.map(f)
-}
-
-class ByteIter extends Iter[Byte] {
- var i = 0
- def hasNext = i < 3
- def next = { i += 1 ; i.toByte }
-} \ No newline at end of file
diff --git a/test/pending/pos/t4436.scala b/test/pending/pos/t4436.scala
deleted file mode 100644
index acbf0beae6..0000000000
--- a/test/pending/pos/t4436.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-trait Chunk[@specialized +A] {
- def bippy[@specialized B >: A](e: B): Chunk[B]
-} \ No newline at end of file
diff --git a/test/pending/pos/t4541.scala b/test/pending/pos/t4541.scala
deleted file mode 100644
index c6d9672cc5..0000000000
--- a/test/pending/pos/t4541.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-@SerialVersionUID(1L)
-final class SparseArray[@specialized T](private var data : Array[T]) extends Serializable {
- def use(inData : Array[T]) = {
- data = inData;
- }
-
- def set(that : SparseArray[T]) = {
- use(that.data.clone)
- }
-} \ No newline at end of file
diff --git a/test/pending/pos/t4606.scala b/test/pending/pos/t4606.scala
deleted file mode 100644
index f4e5058483..0000000000
--- a/test/pending/pos/t4606.scala
+++ /dev/null
@@ -1,29 +0,0 @@
-object t4606 {
- class A(var x: Int)
- class B(x: Int) extends A(x)
- trait C { self: B =>
- def foo = x
- def bar = self.x
- def baz = {
- val b: B = self
- b.x
- }
- }
-
- object Toto extends App {
- val x = new B(10) with C
- println(x.foo) // 10
- println(x.bar) // 10
- println(x.baz) // 10
- println(x.x) // 10
- }
-}
-
-object t3194 {
- class A(var x: Int)
- class B(x: Int) extends A(x) {
- self: A =>
-
- def update(z: Int) = this.x = z
- }
-} \ No newline at end of file
diff --git a/test/pending/pos/t4612.scala b/test/pending/pos/t4612.scala
deleted file mode 100644
index a93c12ef01..0000000000
--- a/test/pending/pos/t4612.scala
+++ /dev/null
@@ -1,15 +0,0 @@
-class CyclicReferenceCompilerBug {
- trait Trait[A] {
- def foo: A
- }
-
- class Class extends Trait[Class] {
- def foo = new Class
-
- trait OtherTrait extends Trait[OtherTrait] {
- self: Class =>
-
- def foo = new Class
- }
- }
-}
diff --git a/test/pending/pos/t4683.scala b/test/pending/pos/t4683.scala
deleted file mode 100644
index 7af7024159..0000000000
--- a/test/pending/pos/t4683.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-class DelayedInitTest {
- def a = ()
- class B extends DelayedInit {
- a
- def delayedInit(body: => Unit) = ()
- }
-}
diff --git a/test/pending/pos/t4695/T_1.scala b/test/pending/pos/t4695/T_1.scala
deleted file mode 100644
index 70fb1a7f21..0000000000
--- a/test/pending/pos/t4695/T_1.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-package foo
-
-class Bar { }
-package object Bar { }
diff --git a/test/pending/pos/t4695/T_2.scala b/test/pending/pos/t4695/T_2.scala
deleted file mode 100644
index 70fb1a7f21..0000000000
--- a/test/pending/pos/t4695/T_2.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-package foo
-
-class Bar { }
-package object Bar { }
diff --git a/test/pending/pos/t4787.scala b/test/pending/pos/t4787.scala
deleted file mode 100644
index cf3fe93c50..0000000000
--- a/test/pending/pos/t4787.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-trait MatrixImpl[@specialized A, @specialized B] {
- def mapTo[ A2, B2, That <: MatrixImpl[A2, B2]](that: That)(f: A => A2) {
- }
-}
diff --git a/test/pending/pos/t4790.scala b/test/pending/pos/t4790.scala
deleted file mode 100644
index e451fe80ab..0000000000
--- a/test/pending/pos/t4790.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-package spectest {
- class Sp[@specialized A, B](val a: A, val b: B) { }
- class Fsp[@specialized A, B](a: A, b: B) extends Sp(a,b) { def ab = (a,b) }
-}
diff --git a/test/pending/pos/t5082.scala b/test/pending/pos/t5082.scala
deleted file mode 100644
index 20a6cfc55f..0000000000
--- a/test/pending/pos/t5082.scala
+++ /dev/null
@@ -1,8 +0,0 @@
-object Test {
- sealed trait A
- case object A1 extends A
-}
-
-trait Something[T]
-
-case class Test() extends Something[Test.A]
diff --git a/test/pending/pos/t5231.scala b/test/pending/pos/t5231.scala
deleted file mode 100644
index 77e6631ebb..0000000000
--- a/test/pending/pos/t5231.scala
+++ /dev/null
@@ -1,18 +0,0 @@
-object Client {
- sealed trait ConfigLike {
- def clientID: Int
- }
-
- object Config {
- def apply() : ConfigBuilder = new ConfigBuilder()
- implicit def build( cb: ConfigBuilder ) : Config = cb.build
- }
-
- final class Config private[Client]( val clientID: Int )
- extends ConfigLike
-
- final class ConfigBuilder private () extends ConfigLike {
- var clientID: Int = 0
- def build : Config = new Config( clientID )
- }
-}
diff --git a/test/pending/pos/t5265.scala b/test/pending/pos/t5265.scala
deleted file mode 100644
index 3be7d2187e..0000000000
--- a/test/pending/pos/t5265.scala
+++ /dev/null
@@ -1,21 +0,0 @@
-import java.util.Date
-
-trait TDate
-
-trait TT[A1,T1]
-
-trait TTFactory[F,G] {
- def create(f: F) : TT[F,G]
- def sample: F
-}
-
-object Impls {
-
- // If the c1 is declared before c2, it compiles fine
- implicit def c2(s: Date) = c1.create(s)
-
- implicit val c1 = new TTFactory[Date,TDate] {
- def create(v: Date): TT[Date,TDate] = sys.error("")
- def sample = new Date
- }
-} \ No newline at end of file
diff --git a/test/pending/pos/t5400.scala b/test/pending/pos/t5400.scala
deleted file mode 100644
index cb4be4bde5..0000000000
--- a/test/pending/pos/t5400.scala
+++ /dev/null
@@ -1,14 +0,0 @@
-trait TFn1B {
- type In
- type Out
- type Apply[T <: In] <: Out
-}
-
-trait TFn1[I, O] extends TFn1B {
- type In = I
- type Out = O
-}
-
-trait >>[F1 <: TFn1[_, _], F2 <: TFn1[_, _]] extends TFn1[F1#In, F2#Out] {
- type Apply[T] = F2#Apply[F1#Apply[T]]
-}
diff --git a/test/pending/pos/t5459.scala b/test/pending/pos/t5459.scala
deleted file mode 100644
index 971e6f896d..0000000000
--- a/test/pending/pos/t5459.scala
+++ /dev/null
@@ -1,48 +0,0 @@
-trait A1
-trait A2
-trait A3
-trait L1 extends A1 with A2 with A3
-
-object Test {
- trait T1[-A <: A1]
- trait T2[-A >: L1]
- trait T3[ A <: A1]
- trait T4[ A >: L1]
- trait T5[+A <: A1]
- trait T6[+A >: L1]
-
- def f1(x: T1[_]) = x
- def f2(x: T2[_]) = x
- def f3(x: T3[_]) = x
- def f4(x: T4[_]) = x
- def f5(x: T5[_]) = x
- def f6(x: T6[_]) = x
- // a.scala:22: error: type arguments [Any] do not conform to trait T5's type parameter bounds [+A <: A1]
- // def f5(x: T5[_]) = x
- // ^
-
- def g1(x: T1[_ <: A1]) = x
- def g2(x: T2[_ >: L1]) = x
- def g3(x: T3[_ <: A1]) = x
- def g4(x: T4[_ >: L1]) = x
- def g5(x: T5[_ <: A1]) = x
- def g6(x: T6[_ >: L1]) = x
-
- def q1(x: T1[_ >: L1]) = x
- def q2(x: T2[_ <: A1]) = x
- def q3(x: T3[_ >: L1]) = x
- def q4(x: T4[_ <: A1]) = x
- def q5(x: T5[_ >: L1]) = x
- def q6(x: T6[_ <: A1]) = x
- // a.scala:41: error: type arguments [Any] do not conform to trait T5's type parameter bounds [+A <: A1]
- // def q5(x: T5[_ >: L1]) = x
- // ^
- // two errors found
-
- def h1(x: T1[_ >: L1 <: A1]) = x
- def h2(x: T2[_ >: L1 <: A1]) = x
- def h3(x: T3[_ >: L1 <: A1]) = x
- def h4(x: T4[_ >: L1 <: A1]) = x
- def h5(x: T5[_ >: L1 <: A1]) = x
- def h6(x: T6[_ >: L1 <: A1]) = x
-}
diff --git a/test/pending/pos/t5503.flags b/test/pending/pos/t5503.flags
deleted file mode 100644
index e8fb65d50c..0000000000
--- a/test/pending/pos/t5503.flags
+++ /dev/null
@@ -1 +0,0 @@
--Xfatal-warnings \ No newline at end of file
diff --git a/test/pending/pos/t5503.scala b/test/pending/pos/t5503.scala
deleted file mode 100644
index 8a1925df1f..0000000000
--- a/test/pending/pos/t5503.scala
+++ /dev/null
@@ -1,18 +0,0 @@
-trait A {
- type Type
- type MethodType <: Type
-
- val MethodType: MethodTypeExtractor = null
-
- abstract class MethodTypeExtractor {
- def unapply(tpe: MethodType): Option[(Any, Any)]
- }
-}
-
-object Test {
- val a: A = null
-
- def foo(tpe: a.Type) = tpe match {
- case a.MethodType(_, _) =>
- }
-} \ No newline at end of file
diff --git a/test/pending/pos/t5521.scala b/test/pending/pos/t5521.scala
deleted file mode 100644
index dc025d0945..0000000000
--- a/test/pending/pos/t5521.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-class Foo { type Bar }
-
-class Quux(val foo: Foo)(val bar: foo.Bar) \ No newline at end of file
diff --git a/test/pending/pos/t5534.scala b/test/pending/pos/t5534.scala
deleted file mode 100644
index 834c4fd68d..0000000000
--- a/test/pending/pos/t5534.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-object Phrase extends Enumeration {
- type Phrase = Value
- val PHRASE1 = Value("My phrase 1")
- val PHRASE2 = Value("My phrase 2")
-}
-
-class Entity(text:String)
-
-object Test {
- val myMapWithPhrases = Phrase.values.map(p => (p -> new Entity(p.toString))).toMap
-} \ No newline at end of file
diff --git a/test/pending/pos/t5559.scala b/test/pending/pos/t5559.scala
deleted file mode 100644
index 586e52cd4f..0000000000
--- a/test/pending/pos/t5559.scala
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-object Test {
-
- class Inv[T]
-
- def foo[S](interface: Inv[_ >: S], implementation: Inv[S]) {}
-
- def bar[R, T <: R](interface: Inv[R], impl: Inv[T]) {
- //foo[T](interface, impl)
- foo(interface, impl) // Compilation Error
- // Inv[R] <: Inv[_ >: S]
- // Inv[T] <: Inv[S]
- // ----------------------
- // R >: S
- // T == S
- }
-
-}
-
-
diff --git a/test/pending/pos/t5564.scala b/test/pending/pos/t5564.scala
deleted file mode 100644
index 1783a903ed..0000000000
--- a/test/pending/pos/t5564.scala
+++ /dev/null
@@ -1,5 +0,0 @@
-trait C
-
-class Foo[@specialized(Int) T, A] {
- def bar[B >: A <: C]: T = ???
-}
diff --git a/test/pending/pos/t5579.scala b/test/pending/pos/t5579.scala
deleted file mode 100644
index a1ee077fe7..0000000000
--- a/test/pending/pos/t5579.scala
+++ /dev/null
@@ -1,29 +0,0 @@
-import language.existentials
-
-class Result[+A]
-
-case class Success[A](x: A) extends Result[A]
-
-class Apply[A]
-
-object Apply {
- def apply[A](f: Int => Result[A]): Apply[A] = new Apply[A]
-}
-
-object TestUnit {
- //Error is here:
- def goo = Apply { i =>
- i match {
- case 1 => Success(Some(1))
- case _ => Success(None)
- }
- }
-
- //If type is defined explicitly (which I wanted from compiler to infer), then all is ok
- def foo = Apply[t forSome { type t >: Some[Int] with None.type <: Option[Int] }] { i =>
- i match {
- case 1 => Success(Some(1))
- case _ => Success(None)
- }
- }
-}
diff --git a/test/pending/pos/t5585.scala b/test/pending/pos/t5585.scala
deleted file mode 100644
index 5d3eb86111..0000000000
--- a/test/pending/pos/t5585.scala
+++ /dev/null
@@ -1,18 +0,0 @@
-class Result[+A]
-
-case class Success[A](x: A) extends Result[A]
-
-class Apply[A]
-
-object Apply {
- def apply[A](f: Int => Result[A]): Apply[A] = new Apply[A]
-}
-
-object TestUnit {
- def goo : Apply[Option[Int]] = Apply { i =>
- val p = i match {
- case 1 => Success(Some(1))
- case _ => Success(None)
- }
- }
-} \ No newline at end of file
diff --git a/test/pending/pos/t5589.scala b/test/pending/pos/t5589.scala
deleted file mode 100644
index 69cbb20391..0000000000
--- a/test/pending/pos/t5589.scala
+++ /dev/null
@@ -1,22 +0,0 @@
-class A {
- // First three compile.
- def f1(x: Either[Int, String]) = x.right map (y => y)
- def f2(x: Either[Int, String]) = for (y <- x.right) yield y
- def f3(x: Either[Int, (String, Int)]) = x.right map { case (y1, y2) => (y1, y2) }
- // Last one fails.
- def f4(x: Either[Int, (String, Int)]) = for ((y1, y2) <- x.right) yield ((y1, y2))
-/**
-./a.scala:5: error: constructor cannot be instantiated to expected type;
- found : (T1, T2)
- required: Either[Nothing,(String, Int)]
- def f4(x: Either[Int, (String, Int)]) = for ((y1, y2) <- x.right) yield ((y1, y2))
- ^
-./a.scala:5: error: not found: value y1
- def f4(x: Either[Int, (String, Int)]) = for ((y1, y2) <- x.right) yield ((y1, y2))
- ^
-./a.scala:5: error: not found: value y2
- def f4(x: Either[Int, (String, Int)]) = for ((y1, y2) <- x.right) yield ((y1, y2))
- ^
-three errors found
-**/
-}
diff --git a/test/pending/pos/t5712.scala b/test/pending/pos/t5712.scala
deleted file mode 100644
index 31f365028a..0000000000
--- a/test/pending/pos/t5712.scala
+++ /dev/null
@@ -1,14 +0,0 @@
-import scala.tools.nsc._
-
-object Test {
-
- // works
- def mkReifier(global: Global)(typer: global.analyzer.Typer) = typer
-
-/*
-<console>:10: error: not found: value global
- class Reifier(global: Global)(typer: global.analyzer.Typer) { }
-*/
- class Reifier(global: Global)(typer: global.analyzer.Typer) { }
-
-}
diff --git a/test/pending/pos/t5877.scala b/test/pending/pos/t5877.scala
deleted file mode 100644
index b77605f7f2..0000000000
--- a/test/pending/pos/t5877.scala
+++ /dev/null
@@ -1,5 +0,0 @@
-package foo { }
-
-package object foo {
- implicit class Foo(val s: String) { }
-}
diff --git a/test/pending/pos/t5954/T_1.scala b/test/pending/pos/t5954/T_1.scala
deleted file mode 100644
index 0064c596b6..0000000000
--- a/test/pending/pos/t5954/T_1.scala
+++ /dev/null
@@ -1,8 +0,0 @@
-package p {
- package base {
- class X
- }
- package object base {
- case class B()
- }
-}
diff --git a/test/pending/pos/t5954/T_2.scala b/test/pending/pos/t5954/T_2.scala
deleted file mode 100644
index 0064c596b6..0000000000
--- a/test/pending/pos/t5954/T_2.scala
+++ /dev/null
@@ -1,8 +0,0 @@
-package p {
- package base {
- class X
- }
- package object base {
- case class B()
- }
-}
diff --git a/test/pending/pos/t5954/T_3.scala b/test/pending/pos/t5954/T_3.scala
deleted file mode 100644
index 0064c596b6..0000000000
--- a/test/pending/pos/t5954/T_3.scala
+++ /dev/null
@@ -1,8 +0,0 @@
-package p {
- package base {
- class X
- }
- package object base {
- case class B()
- }
-}
diff --git a/test/pending/pos/t6225.scala b/test/pending/pos/t6225.scala
deleted file mode 100644
index d7dff3c419..0000000000
--- a/test/pending/pos/t6225.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-package library.x {
- class X {
- class Foo
- implicit val foo = new Foo
- }
-}
-package library { package object x extends X }
-package app {
- import library.x._
- object App { implicitly[Foo] }
-}
diff --git a/test/pending/pos/t7234.scala b/test/pending/pos/t7234.scala
deleted file mode 100644
index 59a233d835..0000000000
--- a/test/pending/pos/t7234.scala
+++ /dev/null
@@ -1,15 +0,0 @@
-trait Main {
- trait A {
- type B
- }
- trait C {
- def c(a: A, x: Int = 0)(b: a.B)
- }
- def c: C
- def d(a: A, x: Int = 0)(b: a.B)
-
- def ok1(a: A)(b: a.B) = c.c(a, 42)(b)
- def ok2(a: A)(b: a.B) = d(a)(b)
-
- def fail(a: A)(b: a.B) = c.c(a)(b)
-}
diff --git a/test/pending/pos/t7234b.scala b/test/pending/pos/t7234b.scala
deleted file mode 100644
index fee98e87a8..0000000000
--- a/test/pending/pos/t7234b.scala
+++ /dev/null
@@ -1,20 +0,0 @@
-trait Main {
- trait A {
- type B
- def b: B
- }
- trait C {
- def c(a: A, x: Int = 0)(b: => a.B, bs: a.B*)
- def d(a: A = null, x: Int = 0)(b1: => a.B = a.b, b2: a.B = a.b)
- }
- def c: C
- def ok(a: A)(b: a.B) = c.c(a, 42)(b)
- def fail(a: A)(b: a.B) = c.c(a)(b)
- def fail2(a: A)(b: a.B) = c.c(a)(b, b)
- def fail3(a: A)(b: a.B) = c.c(a)(b, Seq[a.B](b): _*)
-
- def fail4(a: A)(b: a.B) = c.d(a)()
- def fail5(a: A)(b: a.B) = c.d(a)(b1 = a.b)
- def fail6(a: A)(b: a.B) = c.d(a)(b2 = a.b)
- def fail7(a: A)(b: a.B) = c.d()()
-}
diff --git a/test/pending/pos/t7778/Foo_1.java b/test/pending/pos/t7778/Foo_1.java
deleted file mode 100644
index 65431ffd46..0000000000
--- a/test/pending/pos/t7778/Foo_1.java
+++ /dev/null
@@ -1,6 +0,0 @@
-import java.util.concurrent.Callable;
-
-public abstract class Foo_1<T> implements Callable<Foo_1<Object>.Inner> {
- public abstract class Inner {
- }
-}
diff --git a/test/pending/pos/t7778/Test_2.scala b/test/pending/pos/t7778/Test_2.scala
deleted file mode 100644
index 306303a99e..0000000000
--- a/test/pending/pos/t7778/Test_2.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-class Test {
- null: Foo_1[_]
-}
diff --git a/test/pending/pos/t8079c.scala b/test/pending/pos/t8079c.scala
deleted file mode 100644
index ae7f37e2bf..0000000000
--- a/test/pending/pos/t8079c.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-trait F1[/* - */T, /* + */ R]
-
-object Test {
- import scala.annotation.unchecked._
- private[this] type VariantF1[-T, +R] = F1[T @uncheckedVariance, R @uncheckedVariance]
- trait C[+T] { def foo: VariantF1[Any, T] }
-}
diff --git a/test/pending/pos/t8128b.scala b/test/pending/pos/t8128b.scala
deleted file mode 100644
index dd44a25a90..0000000000
--- a/test/pending/pos/t8128b.scala
+++ /dev/null
@@ -1,18 +0,0 @@
-class Optiony[X] { def isEmpty = true; def get: X = ??? }
-class Seqy[X] { def head: X = ???; def length = 0; def apply(i: Int): X = ??? }
-
-object G {
- def unapply(m: Any): Optiony[_] = ???
-}
-
-object H {
- def unapplySeq(m: Any): Optiony[Seqy[_]] = ???
-}
-
-object Test {
- (0: Any) match {
- case G(v) => v
- case H(v) => v
- case _ =>
- }
-}
diff --git a/test/pending/pos/t8363b.scala b/test/pending/pos/t8363b.scala
deleted file mode 100644
index 393e2a0237..0000000000
--- a/test/pending/pos/t8363b.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-class C(a: Any)
-class Test {
- def foo: Any = {
- def form = 0
- class C1 extends C({def x = form; ()})
- }
-}
diff --git a/test/pending/pos/those-kinds-are-high.scala b/test/pending/pos/those-kinds-are-high.scala
deleted file mode 100644
index 78367cb746..0000000000
--- a/test/pending/pos/those-kinds-are-high.scala
+++ /dev/null
@@ -1,96 +0,0 @@
-class A {
- trait Container[+T]
- trait Template[+CC[X] <: Container[X]]
-
- class C1[T] extends Template[C1] with Container[T]
- class C2[T] extends Template[C2] with Container[T]
-
- /** Target expression:
- * List(new C1[String], new C2[String])
- */
-
- // Here's what would ideally be inferred.
- //
- // scala> :type List[Template[Container] with Container[String]](new C1[String], new C2[String])
- // List[Template[Container] with Container[java.lang.String]]
- //
- // Here's what it does infer.
- //
- // scala> :type List(new C1[String], new C2[String])
- // <console>:8: error: type mismatch;
- // found : C1[String]
- // required: Container[String] with Template[Container[Any] with Template[Container[Any] with Template[Any] with ScalaObject] with ScalaObject] with ScalaObject
- // List(new C1[String], new C2[String])
- // ^
- //
- // Simplified, the inferred type is:
- //
- // List[Container[String] with Template[Container[Any] with Template[Container[Any] with Template[Any]]]
- //
- // *** Update 2/24/2012
- //
- // Hey, now there are polytypes in the inferred type.
- // Not sure if that is progress or regress.
- //
- // test/pending/pos/those-kinds-are-high.scala:36: error: type mismatch;
- // found : C1[String]
- // required: ScalaObject with Container[String] with Template[ScalaObject with Container with Template[ScalaObject with Container with Template[[X]Container[X]]]]
- // def fFail = List(new C1[String], new C2[String])
- // ^
- // test/pending/pos/those-kinds-are-high.scala:36: error: type mismatch;
- // found : C2[String]
- // required: ScalaObject with Container[String] with Template[ScalaObject with Container with Template[ScalaObject with Container with Template[[X]Container[X]]]]
- // def fFail = List(new C1[String], new C2[String])
- // ^
- // two errors found
-
- /** Working version explicitly typed.
- */
- def fExplicit = List[Template[Container] with Container[String]](new C1[String], new C2[String])
-
- // nope
- def fFail = List(new C1[String], new C2[String])
-}
-
-
-trait Other {
- trait GenBar[+A]
- trait Bar[+A] extends GenBar[A]
- trait Templ[+A, +CC[X] <: GenBar[X]]
-
- abstract class CC1[+A] extends Templ[A, CC1] with Bar[A]
- abstract class CC2[+A] extends Templ[A, CC2] with Bar[A]
-
- // Compiles
- class A1 {
- abstract class BarFactory[CC[X] <: Bar[X]]
-
- def f(x: Boolean) = if (x) (null: BarFactory[CC1]) else (null: BarFactory[CC2])
- }
-
- // Fails - only difference is CC covariant.
- class A2 {
- abstract class BarFactory[+CC[X] <: Bar[X]]
-
- def f(x: Boolean) = if (x) (null: BarFactory[CC1]) else (null: BarFactory[CC2])
- // c.scala:23: error: kinds of the type arguments (Bar with Templ[Any,Bar]) do not conform to the expected kinds of the type parameters (type CC) in class BarFactory.
- // Bar with Templ[Any,Bar]'s type parameters do not match type CC's expected parameters:
- // <empty> has no type parameters, but type CC has one
- // def f(x: Boolean) = if (x) (null: BarFactory[CC1]) else (null: BarFactory[CC2])
- // ^
- // one error found
- }
-
- // Compiles - CC contravariant.
- class A3 {
- abstract class BarFactory[-CC[X] <: Bar[X]] // with Templ[X, CC]]
-
- def f(x: Boolean) = if (x) (null: BarFactory[CC1]) else (null: BarFactory[CC2])
- // c.scala:23: error: kinds of the type arguments (Bar with Templ[Any,Bar]) do not conform to the expected kinds of the type parameters (type CC) in class BarFactory.
- // Bar with Templ[Any,Bar]'s type parameters do not match type CC's expected parameters:
- // <empty> has no type parameters, but type CC has one
- // def f(x: Boolean) = if (x) (null: BarFactory[CC1]) else (null: BarFactory[CC2])
- // ^
- // one error found
- }
-}
diff --git a/test/pending/pos/treecheckers.flags b/test/pending/pos/treecheckers.flags
deleted file mode 100644
index 5319681590..0000000000
--- a/test/pending/pos/treecheckers.flags
+++ /dev/null
@@ -1 +0,0 @@
--Ycheck:all \ No newline at end of file
diff --git a/test/pending/pos/treecheckers/c1.scala b/test/pending/pos/treecheckers/c1.scala
deleted file mode 100644
index b936839039..0000000000
--- a/test/pending/pos/treecheckers/c1.scala
+++ /dev/null
@@ -1,12 +0,0 @@
-object Test1 {
- def f[T](xs: Array[T]): Array[T] = xs match { case xs => xs }
- // [check: patmat] The symbol, tpe or info of tree `(x) : Array[T]` refers to a out-of-scope symbol, type T. tree.symbol.ownerChain: value x
- // [check: patmat] The symbol, tpe or info of tree `(x) : Array[T]` refers to a out-of-scope symbol, type T. tree.symbol.ownerChain: value x
-
- def g[T](xs: Array[T]): Array[T] = {
- val x1: Array[T] = xs
- def case4() = matchEnd3(x1)
- def matchEnd3(x: Array[T]) = x
- case4()
- }
-}
diff --git a/test/pending/pos/treecheckers/c2.scala b/test/pending/pos/treecheckers/c2.scala
deleted file mode 100644
index c893a5c922..0000000000
--- a/test/pending/pos/treecheckers/c2.scala
+++ /dev/null
@@ -1 +0,0 @@
-class Test2(val valueVal: Int) extends AnyVal
diff --git a/test/pending/pos/treecheckers/c3.scala b/test/pending/pos/treecheckers/c3.scala
deleted file mode 100644
index e480bbfb08..0000000000
--- a/test/pending/pos/treecheckers/c3.scala
+++ /dev/null
@@ -1,8 +0,0 @@
-import scala.collection.mutable.ArrayOps
-
-object Test3 {
- implicit def genericArrayOps[T](xs: Array[T]): ArrayOps[T] = (xs match {
- case x: Array[AnyRef] => refArrayOps[AnyRef](x)
- case x: Array[Boolean] => booleanArrayOps(x)
- }).asInstanceOf[ArrayOps[T]]
-}
diff --git a/test/pending/pos/treecheckers/c4.scala b/test/pending/pos/treecheckers/c4.scala
deleted file mode 100644
index 2328131770..0000000000
--- a/test/pending/pos/treecheckers/c4.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-sealed trait Message[+A]
-class Script[A] extends Message[A] {
- def iterator: Iterator[Message[A]] = ???
-}
-
-trait Test4[A] {
- def f(cmd: Message[A]): Iterator[A] = cmd match { case s: Script[t] => s.iterator flatMap f }
- def g(cmd: Message[A]) = cmd match { case s: Script[t] => s }
-}
diff --git a/test/pending/pos/treecheckers/c5.scala b/test/pending/pos/treecheckers/c5.scala
deleted file mode 100644
index 43cbb65d74..0000000000
--- a/test/pending/pos/treecheckers/c5.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-trait Factory[CC[X] <: Traversable[X]]
-
-object Test5 extends Factory[Traversable]
diff --git a/test/pending/pos/treecheckers/c6.scala b/test/pending/pos/treecheckers/c6.scala
deleted file mode 100644
index 8283655f3a..0000000000
--- a/test/pending/pos/treecheckers/c6.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-object Test6 {
- import scala.reflect.ClassTag
- def f[T: ClassTag] = implicitly[ClassTag[T]].runtimeClass match { case x => x }
-}
diff --git a/test/pending/pos/unappgadteval.scala b/test/pending/pos/unappgadteval.scala
deleted file mode 100644
index 89f6cabc43..0000000000
--- a/test/pending/pos/unappgadteval.scala
+++ /dev/null
@@ -1,77 +0,0 @@
-/** Cleaned up in october 2010 by paulp.
- * Hey, we should get this working.
- */
-
-// Class hierarchy
-trait Term[a]
-
-object Var{ def unapply[a](x:Var[a]) = Some(x.name) }
-class Var[a] (val name : String) extends Term[a]
-
-object Num{ def unapply(x:Num) = Some(x.value) }
-class Num (val value : Int) extends Term[Int]
-
-object Lam{ def unapply[b,c](l: Lam[b,c]) = Some(l.x, l.e) }
-class Lam[b, c](val x : Var[b], val e : Term[c]) extends Term[b => c]
-
-object App{ def unapply[b,c](a: App[b,c]) = Some(a.f, a.e) }
-class App[b, c] (val f : Term[b => c], val e : Term[b]) extends Term[c]
-
-object Suc { def unapply(a: Suc) = true }
-class Suc() extends Term[Int => Int]
-
-// Environments :
-abstract class Env {
- def apply[a](v: Var[a]): a
- def extend[a](v: Var[a], x : a) = new Env {
- def apply[b](w: Var[b]): b = w match {
- case _ : v.type => x // v eq w, hence a = b
- case _ => Env.this.apply(w)
- }}
-}
-
-object empty extends Env {
- def apply[a](x: Var[a]): a = throw new Error("not found : "+x.name)
-}
-
-object Test {
- val v1 = new Var[util.Random]("random")
- val v2 = new Var[Int]("Int")
- val v3 = new Var[List[String]]("list")
-
- val anEnv = (empty
- .extend(v1, new util.Random)
- .extend(v2, 58)
- .extend(v3, Nil)
- )
-
- def eval[a](t: Term[a], env : Env): a = t match {
- // First three work
- case v : Var[b] => env(v) // a = b
- case n @ Num(value) => value // a = Int
- case a @ App(f,e) => eval(f, env)(eval(e, env)) // a = c
-
- // Next one fails like:
- //
- // found : (Int) => Int
- // required: a
- case i @ Suc() => { (y: Int) => y + 1 } // a = Int => Int
-
- // Next one fails like:
- //
- // error: '=>' expected but '[' found.
- // case f @ Lam[b,c](x, e) => { (y: b) => eval(e, env.extend(x, y)) } // a = b=>c
- // ^
- case f @ Lam[b,c](x, e) => { (y: b) => eval(e, env.extend(x, y)) } // a = b=>c
- }
-
- val f1 = () => eval(v1, anEnv)
- val f2 = () => eval(v2, anEnv)
- val f3 = () => eval(v3, anEnv)
-
- def main(args: Array[String]): Unit = {
- println(f1())
- println(f2())
- println(f3())
- }
-}
diff --git a/test/pending/pos/virt.scala b/test/pending/pos/virt.scala
deleted file mode 100644
index 99dcd747b2..0000000000
--- a/test/pending/pos/virt.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-object Virt extends Application {
- class Foo {
- trait Inner <: { val x : Int = 3 }
- }
-
- class Bar extends Foo {
- trait Inner <: { val y : Int = x }
- }
-}
diff --git a/test/pending/presentation/context-bounds1.check b/test/pending/presentation/context-bounds1.check
deleted file mode 100644
index b444de59a4..0000000000
--- a/test/pending/presentation/context-bounds1.check
+++ /dev/null
@@ -1,51 +0,0 @@
-reload: ContextBounds.scala
-
-askHyperlinkPos for `Blubb` at (2,23) ContextBounds.scala
-================================================================================
-[response] found askHyperlinkPos for `Blubb` at (13,7) ContextBounds.scala
-================================================================================
-
-askHyperlinkPos for `Foo` at (4,17) ContextBounds.scala
-================================================================================
-[response] found askHyperlinkPos for `Foo` at (9,7) ContextBounds.scala
-================================================================================
-
-askHyperlinkPos for `Blubb` at (4,32) ContextBounds.scala
-================================================================================
-[response] found askHyperlinkPos for `Blubb` at (13,7) ContextBounds.scala
-================================================================================
-
-askHyperlinkPos for `A` at (4,42) ContextBounds.scala
-================================================================================
-[response] found askHyperlinkPos for `A` at (4,12) ContextBounds.scala
-================================================================================
-
-askHyperlinkPos for `A` at (4,51) ContextBounds.scala
-================================================================================
-[response] found askHyperlinkPos for `A` at (4,12) ContextBounds.scala
-================================================================================
-
-askHyperlinkPos for `blubb` at (4,66) ContextBounds.scala
-================================================================================
-[response] found askHyperlinkPos for `blubb` at (2,7) ContextBounds.scala
-================================================================================
-
-askHyperlinkPos for `Foo` at (5,18) ContextBounds.scala
-================================================================================
-[response] found askHyperlinkPos for `Foo` at (9,7) ContextBounds.scala
-================================================================================
-
-askHyperlinkPos for `A` at (5,25) ContextBounds.scala
-================================================================================
-[response] found askHyperlinkPos for `A` at (4,12) ContextBounds.scala
-================================================================================
-
-askHyperlinkPos for `foo` at (5,36) ContextBounds.scala
-================================================================================
-[response] found askHyperlinkPos for `foo` at (10,7) ContextBounds.scala
-================================================================================
-
-askHyperlinkPos for `A` at (10,14) ContextBounds.scala
-================================================================================
-[response] found askHyperlinkPos for `A` at (9,11) ContextBounds.scala
-================================================================================
diff --git a/test/pending/presentation/context-bounds1/Test.scala b/test/pending/presentation/context-bounds1/Test.scala
deleted file mode 100644
index bec1131c4c..0000000000
--- a/test/pending/presentation/context-bounds1/Test.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-import scala.tools.nsc.interactive.tests.InteractiveTest
-
-object Test extends InteractiveTest \ No newline at end of file
diff --git a/test/pending/presentation/context-bounds1/src/ContextBounds.scala b/test/pending/presentation/context-bounds1/src/ContextBounds.scala
deleted file mode 100644
index 72a8f694a3..0000000000
--- a/test/pending/presentation/context-bounds1/src/ContextBounds.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-object ContextBound {
- val blubb = new Blubb/*#*/
-
- def work[A: Foo/*#*/](f: Blubb/*#*/ => A/*#*/): A/*#*/ = f(blubb/*#*/) ensuring {
- implicitly[Foo/*#*/[A/*#*/]].foo/*#*/(_) >= 42
- }
-}
-
-trait Foo[A] {
- def foo(a: A/*#*/): Int
-}
-
-class Blubb \ No newline at end of file
diff --git a/test/pending/reify_typeof.check b/test/pending/reify_typeof.check
deleted file mode 100644
index 670f76faa4..0000000000
--- a/test/pending/reify_typeof.check
+++ /dev/null
@@ -1,10 +0,0 @@
-Expr[Unit]({
- val ru = `package`.universe;
- val tpe1: ru.Type = ru.typeOf[`package`.List[Int]];
- Predef.println(tpe1);
- val tpe2: ru.Type = ru.typeOf(List.apply(1, 2, 3));
- Predef.println(tpe2)
-})
-scala.List[Int]
-List[Int]
-()
diff --git a/test/pending/reify_typeof.scala b/test/pending/reify_typeof.scala
deleted file mode 100644
index 985c57b9ab..0000000000
--- a/test/pending/reify_typeof.scala
+++ /dev/null
@@ -1,14 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.Eval
-
-object Test extends App {
- val reified = reify {
- val ru = scala.reflect.runtime.universe
- val tpe1: ru.Type = ru.typeOf[List[Int]]
- println(tpe1)
- val tpe2: ru.Type = ru.typeOf(List(1, 2, 3))
- println(tpe2)
- }
- println(reified)
- println(reified.eval)
-} \ No newline at end of file
diff --git a/test/pending/run/TestFlatMap.scala b/test/pending/run/TestFlatMap.scala
deleted file mode 100644
index dd5a0a0c2f..0000000000
--- a/test/pending/run/TestFlatMap.scala
+++ /dev/null
@@ -1,29 +0,0 @@
-import scala.collection.parallel.{ ParMap => PMap }
-import scala.collection.parallel.mutable.{ ParHashSet => PMHashSet, ParHashMap => PMHashMap, ParArray }
-import scala.util.Random
-import scala.collection.parallel.CompositeThrowable
-
-object Test {
-
- def main(args: Array[String]) {
- val N = 1500
- val M = 1500
- var unmatchedLeft = new PMHashSet[Int]
- var unmatchedRight = new PMHashSet[Int]
- Range(0, N).foreach{ x => unmatchedLeft += x}
- Range(0, M).foreach{ x => unmatchedRight += x}
-
- try {
- val matches = unmatchedLeft.flatMap{ lind: Int =>
- val dists = unmatchedRight.seq.map{ rind: Int =>
- val dist = Random.nextInt
- (rind, dist)
- }
- dists
- }
- } catch {
- case c: CompositeThrowable => for (t <- c.throwables) println("\n%s\n%s".format(t, t.getStackTrace.mkString("\n")))
- }
- }
-
-}
diff --git a/test/pending/run/bug4704run.scala b/test/pending/run/bug4704run.scala
deleted file mode 100644
index af488a56c7..0000000000
--- a/test/pending/run/bug4704run.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-trait MM {
- protected def method = "bip"
-}
-trait NN {
- protected def method = "bop"
-}
-trait OOOOO extends MM with NN {
- override protected def method = super[MM].method + super[NN].method
- override def hashCode = super[MM].hashCode + super[NN].hashCode
-}
diff --git a/test/pending/run/delambdafy-lambdametafactory.scala b/test/pending/run/delambdafy-lambdametafactory.scala
deleted file mode 100644
index daea8a39fe..0000000000
--- a/test/pending/run/delambdafy-lambdametafactory.scala
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// Tests that the static accessor method for lambda bodies
-// (generated under -Ydelambdafy:method) are compatible with
-// Java 8's LambdaMetafactory.
-//
-import java.lang.invoke._
-
-class C {
- def test1: Unit = {
- (x: String) => x.reverse
- }
- def test2: Unit = {
- val capture1 = "capture1"
- (x: String) => capture1 + " " + x.reverse
- }
- def test3: Unit = {
- (x: String) => C.this + " " + x.reverse
- }
-}
-trait T {
- def test4: Unit = {
- (x: String) => x.reverse
- }
-}
-
-// A functional interface. Function1 contains abstract methods that are filled in by mixin
-trait Function1ish[A, B] {
- def apply(a: A): B
-}
-
-object Test {
- def lambdaFactory[A, B](hostClass: Class[_], instantiatedParam: Class[A], instantiatedRet: Class[B], accessorName: String,
- capturedParams: Array[(Class[_], AnyRef)] = Array()) = {
- val caller = MethodHandles.lookup
- val methodType = MethodType.methodType(classOf[AnyRef], Array[Class[_]](classOf[AnyRef]))
- val instantiatedMethodType = MethodType.methodType(instantiatedRet, Array[Class[_]](instantiatedParam))
- val (capturedParamTypes, captured) = capturedParams.unzip
- val targetMethodType = MethodType.methodType(instantiatedRet, capturedParamTypes :+ instantiatedParam)
- val invokedType = MethodType.methodType(classOf[Function1ish[_, _]], capturedParamTypes)
- val target = caller.findStatic(hostClass, accessorName, targetMethodType)
- val site = LambdaMetafactory.metafactory(caller, "apply", invokedType, methodType, target, instantiatedMethodType)
- site.getTarget.invokeWithArguments(captured: _*).asInstanceOf[Function1ish[A, B]]
- }
- def main(args: Array[String]) {
- println(lambdaFactory(classOf[C], classOf[String], classOf[String], "accessor$1").apply("abc"))
- println(lambdaFactory(classOf[C], classOf[String], classOf[String], "accessor$2", Array(classOf[String] -> "capture1")).apply("abc"))
- println(lambdaFactory(classOf[C], classOf[String], classOf[String], "accessor$3", Array(classOf[C] -> new C)).apply("abc"))
- println(lambdaFactory(Class.forName("T$class"), classOf[String], classOf[String], "accessor$4", Array(classOf[T] -> new T{})).apply("abc"))
- }
-}
diff --git a/test/pending/run/hk-lub-fail.scala b/test/pending/run/hk-lub-fail.scala
deleted file mode 100644
index 0ac4fdd841..0000000000
--- a/test/pending/run/hk-lub-fail.scala
+++ /dev/null
@@ -1,37 +0,0 @@
-// Tue Jul 12 16:38:23 PDT 2011
-
-class Bip[T1]
-class Foo[T2] extends Bip[T2]
-class Bar[T3] extends Bip[T3]
-
-abstract class Factory[CC[X] <: Bip[X]] { }
-
-object Quux1 extends Factory[Foo]
-object Quux2 extends Factory[Bar]
-
-object Test {
- // FAIL
- val xs = List(Quux1, Quux2)
- // error: type mismatch;
- // found : Quux1.type (with underlying type object Quux1)
- // required: Factory[_ >: Bar with Foo <: Bip]
- // ^^ ^^ ^^ ^^ <-- QUIZ: what is missing from these types?
-
- // The type it should figure out, come on scalac
- type F = Factory[CC] forSome { type X ; type CC[X] >: Bar[X] with Foo[X] <: Bip[X] }
-
- // No problem
- val ys = List[F](Quux1, Quux2)
-
- // A repl session to get you started.
-/*
- val quux1 = EmptyPackageClass.tpe.member(TermName("Quux1"))
- val quux2 = EmptyPackageClass.tpe.member(TermName("Quux2"))
- val tps = List(quux1, quux2) map (_.tpe)
- val test = EmptyPackageClass.tpe.member(TermName("Test"))
- val f = test.tpe.member(TypeName("F")).tpe
-
- val fn = f.normalize.asInstanceOf[ExistentialType]
- val fn2 = fn.underlying.asInstanceOf[TypeRef]
-*/
-}
diff --git a/test/pending/run/idempotency-partial-functions.scala b/test/pending/run/idempotency-partial-functions.scala
deleted file mode 100644
index c9d650ca89..0000000000
--- a/test/pending/run/idempotency-partial-functions.scala
+++ /dev/null
@@ -1,28 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.reflect.runtime.{currentMirror => cm}
-import scala.tools.reflect.{ToolBox, ToolBoxError}
-import scala.tools.reflect.Eval
-
-// Related to SI-6187
-//
-// Moved to pending as we are currently blocked by the inability
-// to reify the parent types of the anonymous function class,
-// which are not part of the tree, but rather only part of the
-// ClassInfoType.
-object Test extends App {
- val partials = reify {
- List((false,true)) collect { case (x,true) => x }
- }
- println(Seq(show(partials), showRaw(partials)).mkString("\n\n"))
- try {
- println(partials.eval)
- } catch {
- case e: ToolBoxError => println(e)
- }
- val tb = cm.mkToolBox()
- val tpartials = tb.typecheck(partials.tree)
- println(tpartials)
- val rtpartials = tb.untypecheck(tpartials)
- println(tb.eval(rtpartials))
-}
-Test.main(null) \ No newline at end of file
diff --git a/test/pending/run/implicit-classes.scala b/test/pending/run/implicit-classes.scala
deleted file mode 100644
index 02b74de2b0..0000000000
--- a/test/pending/run/implicit-classes.scala
+++ /dev/null
@@ -1,17 +0,0 @@
-object O {
- implicit class C(s: String) {
- def twice = s + s
- }
-}
-
-/**
-//
-// We'd like to augment object O in Namers so that it also has an implicit method
-object O {
- implicit class C(s: String) {
- def twice = s + s
- }
- implicit def C(s: String): C = new C(s)
-}
-
-**/
diff --git a/test/pending/run/inline-ex-handlers.check b/test/pending/run/inline-ex-handlers.check
deleted file mode 100644
index fce32771b4..0000000000
--- a/test/pending/run/inline-ex-handlers.check
+++ /dev/null
@@ -1,491 +0,0 @@
---- a
-+++ b
-@@ -171,5 +171,5 @@
- def productElement(x$1: Int (INT)): Object {
-- locals: value x$1, value x1
-+ locals: value x$1, value x1, variable boxed1
- startBlock: 1
-- blocks: [1,2,3,4]
-+ blocks: [1,3,4]
-
-@@ -186,2 +186,4 @@
- 92 LOAD_LOCAL(value x$1)
-+ 92 STORE_LOCAL(variable boxed1)
-+ 92 LOAD_LOCAL(variable boxed1)
- 92 BOX INT
-@@ -194,5 +196,2 @@
- 92 CALL_METHOD MyException.message (dynamic)
-- 92 JUMP 2
--
-- 2:
- 92 RETURN(REF(class Object))
-@@ -246,3 +245,3 @@
- startBlock: 1
-- blocks: [1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18]
-+ blocks: [1,2,3,4,5,6,8,11,12,13,14,15,16,17,18]
-
-@@ -257,5 +256,2 @@
- 92 SCOPE_ENTER value x1
-- 92 JUMP 7
--
-- 7:
- 92 LOAD_LOCAL(value x1)
-@@ -408,5 +404,5 @@
- def main(args: Array[String] (ARRAY[REF(class String)])): Unit {
-- locals: value args, variable result, value ex6, value x4, value x5, value message, value x
-+ locals: value args, variable result, value ex6, value x4, value x5, value x
- startBlock: 1
-- blocks: [1,2,3,4,5,8,10,11,13]
-+ blocks: [1,2,3,5,8,10,11,13,14]
-
-@@ -434,4 +430,13 @@
- 103 CALL_METHOD MyException.<init> (static-instance)
-- 103 THROW(MyException)
-+ ? STORE_LOCAL(value ex6)
-+ ? JUMP 14
-
-+ 14:
-+ 101 LOAD_LOCAL(value ex6)
-+ 101 STORE_LOCAL(value x4)
-+ 101 SCOPE_ENTER value x4
-+ 106 LOAD_LOCAL(value x4)
-+ 106 IS_INSTANCE REF(class MyException)
-+ 106 CZJUMP (BOOL)NE ? 5 : 8
-+
- 13:
-@@ -447,5 +452,2 @@
- 101 SCOPE_ENTER value x4
-- 101 JUMP 4
--
-- 4:
- 106 LOAD_LOCAL(value x4)
-@@ -459,8 +461,5 @@
- 106 SCOPE_ENTER value x5
-- 106 LOAD_LOCAL(value x5)
-- 106 CALL_METHOD MyException.message (dynamic)
-- 106 STORE_LOCAL(value message)
-- 106 SCOPE_ENTER value message
- 106 LOAD_MODULE object Predef
-- 106 LOAD_LOCAL(value message)
-+ ? LOAD_LOCAL(value x5)
-+ 106 CALL_METHOD MyException.message (dynamic)
- 106 CALL_METHOD scala.Predef.println (dynamic)
-@@ -536,3 +535,3 @@
- startBlock: 1
-- blocks: [1,2,3,4,6,7,9,10]
-+ blocks: [1,3,4,6,7,9,10,11,12,13]
-
-@@ -565,4 +564,9 @@
- 306 CALL_METHOD MyException.<init> (static-instance)
-- 306 THROW(MyException)
-+ ? JUMP 11
-
-+ 11:
-+ ? LOAD_LOCAL(variable monitor4)
-+ 305 MONITOR_EXIT
-+ ? JUMP 12
-+
- 9:
-@@ -571,3 +575,3 @@
- 305 MONITOR_EXIT
-- ? THROW(Throwable)
-+ ? JUMP 12
-
-@@ -577,4 +581,11 @@
- 304 MONITOR_EXIT
-- ? THROW(Throwable)
-+ ? STORE_LOCAL(value t)
-+ ? JUMP 13
-
-+ 12:
-+ ? LOAD_LOCAL(variable monitor3)
-+ 304 MONITOR_EXIT
-+ ? STORE_LOCAL(value t)
-+ ? JUMP 13
-+
- 3:
-@@ -591,5 +602,14 @@
- 310 CALL_METHOD scala.Predef.println (dynamic)
-- 310 JUMP 2
-+ 300 RETURN(UNIT)
-
-- 2:
-+ 13:
-+ 310 LOAD_MODULE object Predef
-+ 310 CALL_PRIMITIVE(StartConcat)
-+ 310 CONSTANT("Caught crash: ")
-+ 310 CALL_PRIMITIVE(StringConcat(REF(class String)))
-+ 310 LOAD_LOCAL(value t)
-+ 310 CALL_METHOD java.lang.Throwable.toString (dynamic)
-+ 310 CALL_PRIMITIVE(StringConcat(REF(class String)))
-+ 310 CALL_PRIMITIVE(EndConcat)
-+ 310 CALL_METHOD scala.Predef.println (dynamic)
- 300 RETURN(UNIT)
-@@ -601,6 +621,6 @@
- with finalizer: null
-- catch (Throwable) in Vector(7, 9, 10) starting at: 6
-+ catch (Throwable) in Vector(7, 9, 10, 11) starting at: 6
- consisting of blocks: List(6)
- with finalizer: null
-- catch (Throwable) in Vector(4, 6, 7, 9, 10) starting at: 3
-+ catch (Throwable) in Vector(4, 6, 7, 9, 10, 11, 12) starting at: 3
- consisting of blocks: List(3)
-@@ -636,3 +656,3 @@
- startBlock: 1
-- blocks: [1,3,4,5,6,8,9]
-+ blocks: [1,3,4,5,6,8,9,10,11]
-
-@@ -660,4 +680,10 @@
- 78 CALL_METHOD java.lang.IllegalArgumentException.<init> (static-instance)
-- 78 THROW(IllegalArgumentException)
-+ ? STORE_LOCAL(value e)
-+ ? JUMP 10
-
-+ 10:
-+ 81 LOAD_LOCAL(value e)
-+ ? STORE_LOCAL(variable exc1)
-+ ? JUMP 11
-+
- 8:
-@@ -686,3 +712,4 @@
- 81 LOAD_LOCAL(value e)
-- 81 THROW(Exception)
-+ ? STORE_LOCAL(variable exc1)
-+ ? JUMP 11
-
-@@ -703,2 +730,15 @@
-
-+ 11:
-+ 83 LOAD_MODULE object Predef
-+ 83 CONSTANT("finally")
-+ 83 CALL_METHOD scala.Predef.println (dynamic)
-+ 84 LOAD_LOCAL(variable result)
-+ 84 CONSTANT(1)
-+ 84 CALL_PRIMITIVE(Arithmetic(SUB,INT))
-+ 84 CONSTANT(2)
-+ 84 CALL_PRIMITIVE(Arithmetic(DIV,INT))
-+ 84 STORE_LOCAL(variable result)
-+ 84 LOAD_LOCAL(variable exc1)
-+ 84 THROW(Throwable)
-+
- }
-@@ -708,3 +748,3 @@
- with finalizer: null
-- catch (<none>) in Vector(4, 5, 6, 8) starting at: 3
-+ catch (<none>) in Vector(4, 5, 6, 8, 10) starting at: 3
- consisting of blocks: List(3)
-@@ -732,5 +772,5 @@
- def main(args: Array[String] (ARRAY[REF(class String)])): Unit {
-- locals: value args, variable result, value ex6, variable exc2, value x4, value x5, value message, value x, value ex6, value x4, value x5, value message, value x
-+ locals: value args, variable result, value ex6, variable exc2, value x4, value x5, value x, value ex6, value x4, value x5, value x
- startBlock: 1
-- blocks: [1,3,4,5,6,9,13,14,15,18,20,21,23,24]
-+ blocks: [1,3,4,5,6,9,13,14,15,18,20,21,23,24,25,26,27]
-
-@@ -758,4 +798,11 @@
- 172 CALL_METHOD MyException.<init> (static-instance)
-- 172 THROW(MyException)
-+ ? STORE_LOCAL(value ex6)
-+ ? JUMP 25
-
-+ 25:
-+ 170 LOAD_LOCAL(value ex6)
-+ 170 STORE_LOCAL(value x4)
-+ 170 SCOPE_ENTER value x4
-+ 170 JUMP 14
-+
- 23:
-@@ -798,8 +845,5 @@
- 175 SCOPE_ENTER value x5
-- 175 LOAD_LOCAL(value x5)
-- 175 CALL_METHOD MyException.message (dynamic)
-- 175 STORE_LOCAL(value message)
-- 175 SCOPE_ENTER value message
- 176 LOAD_MODULE object Predef
-- 176 LOAD_LOCAL(value message)
-+ ? LOAD_LOCAL(value x5)
-+ 176 CALL_METHOD MyException.message (dynamic)
- 176 CALL_METHOD scala.Predef.println (dynamic)
-@@ -807,5 +851,7 @@
- 177 DUP(REF(class MyException))
-- 177 LOAD_LOCAL(value message)
-+ ? LOAD_LOCAL(value x5)
-+ 177 CALL_METHOD MyException.message (dynamic)
- 177 CALL_METHOD MyException.<init> (static-instance)
-- 177 THROW(MyException)
-+ ? STORE_LOCAL(value ex6)
-+ ? JUMP 26
-
-@@ -813,3 +859,4 @@
- 170 LOAD_LOCAL(value ex6)
-- 170 THROW(Throwable)
-+ ? STORE_LOCAL(value ex6)
-+ ? JUMP 26
-
-@@ -823,2 +870,8 @@
-
-+ 26:
-+ 169 LOAD_LOCAL(value ex6)
-+ 169 STORE_LOCAL(value x4)
-+ 169 SCOPE_ENTER value x4
-+ 169 JUMP 5
-+
- 5:
-@@ -833,8 +886,5 @@
- 180 SCOPE_ENTER value x5
-- 180 LOAD_LOCAL(value x5)
-- 180 CALL_METHOD MyException.message (dynamic)
-- 180 STORE_LOCAL(value message)
-- 180 SCOPE_ENTER value message
- 181 LOAD_MODULE object Predef
-- 181 LOAD_LOCAL(value message)
-+ ? LOAD_LOCAL(value x5)
-+ 181 CALL_METHOD MyException.message (dynamic)
- 181 CALL_METHOD scala.Predef.println (dynamic)
-@@ -842,5 +892,7 @@
- 182 DUP(REF(class MyException))
-- 182 LOAD_LOCAL(value message)
-+ ? LOAD_LOCAL(value x5)
-+ 182 CALL_METHOD MyException.message (dynamic)
- 182 CALL_METHOD MyException.<init> (static-instance)
-- 182 THROW(MyException)
-+ ? STORE_LOCAL(variable exc2)
-+ ? JUMP 27
-
-@@ -848,3 +900,4 @@
- 169 LOAD_LOCAL(value ex6)
-- 169 THROW(Throwable)
-+ ? STORE_LOCAL(variable exc2)
-+ ? JUMP 27
-
-@@ -865,2 +918,15 @@
-
-+ 27:
-+ 184 LOAD_MODULE object Predef
-+ 184 CONSTANT("finally")
-+ 184 CALL_METHOD scala.Predef.println (dynamic)
-+ 185 LOAD_LOCAL(variable result)
-+ 185 CONSTANT(1)
-+ 185 CALL_PRIMITIVE(Arithmetic(SUB,INT))
-+ 185 CONSTANT(2)
-+ 185 CALL_PRIMITIVE(Arithmetic(DIV,INT))
-+ 185 STORE_LOCAL(variable result)
-+ 185 LOAD_LOCAL(variable exc2)
-+ 185 THROW(Throwable)
-+
- }
-@@ -870,6 +936,6 @@
- with finalizer: null
-- catch (Throwable) in Vector(13, 14, 15, 18, 20, 21, 23) starting at: 4
-+ catch (Throwable) in Vector(13, 14, 15, 18, 20, 21, 23, 25) starting at: 4
- consisting of blocks: List(9, 8, 6, 5, 4)
- with finalizer: null
-- catch (<none>) in Vector(4, 5, 6, 9, 13, 14, 15, 18, 20, 21, 23) starting at: 3
-+ catch (<none>) in Vector(4, 5, 6, 9, 13, 14, 15, 18, 20, 21, 23, 25, 26) starting at: 3
- consisting of blocks: List(3)
-@@ -897,5 +963,5 @@
- def main(args: Array[String] (ARRAY[REF(class String)])): Unit {
-- locals: value args, variable result, value e, value ex6, value x4, value x5, value message, value x
-+ locals: value args, variable result, value e, value ex6, value x4, value x5, value x
- startBlock: 1
-- blocks: [1,2,3,6,7,8,11,13,14,16]
-+ blocks: [1,2,3,6,7,8,11,13,14,16,17]
-
-@@ -923,4 +989,11 @@
- 124 CALL_METHOD MyException.<init> (static-instance)
-- 124 THROW(MyException)
-+ ? STORE_LOCAL(value ex6)
-+ ? JUMP 17
-
-+ 17:
-+ 122 LOAD_LOCAL(value ex6)
-+ 122 STORE_LOCAL(value x4)
-+ 122 SCOPE_ENTER value x4
-+ 122 JUMP 7
-+
- 16:
-@@ -948,8 +1021,5 @@
- 127 SCOPE_ENTER value x5
-- 127 LOAD_LOCAL(value x5)
-- 127 CALL_METHOD MyException.message (dynamic)
-- 127 STORE_LOCAL(value message)
-- 127 SCOPE_ENTER value message
- 127 LOAD_MODULE object Predef
-- 127 LOAD_LOCAL(value message)
-+ ? LOAD_LOCAL(value x5)
-+ 127 CALL_METHOD MyException.message (dynamic)
- 127 CALL_METHOD scala.Predef.println (dynamic)
-@@ -982,3 +1052,3 @@
- with finalizer: null
-- catch (IllegalArgumentException) in Vector(6, 7, 8, 11, 13, 14, 16) starting at: 3
-+ catch (IllegalArgumentException) in Vector(6, 7, 8, 11, 13, 14, 16, 17) starting at: 3
- consisting of blocks: List(3)
-@@ -1006,5 +1076,5 @@
- def main(args: Array[String] (ARRAY[REF(class String)])): Unit {
-- locals: value args, variable result, value ex6, value x4, value x5, value message, value x, value e
-+ locals: value args, variable result, value ex6, value x4, value x5, value x, value e
- startBlock: 1
-- blocks: [1,2,3,4,5,8,12,13,14,16]
-+ blocks: [1,2,3,5,8,12,13,14,16,17]
-
-@@ -1032,4 +1102,13 @@
- 148 CALL_METHOD MyException.<init> (static-instance)
-- 148 THROW(MyException)
-+ ? STORE_LOCAL(value ex6)
-+ ? JUMP 17
-
-+ 17:
-+ 145 LOAD_LOCAL(value ex6)
-+ 145 STORE_LOCAL(value x4)
-+ 145 SCOPE_ENTER value x4
-+ 154 LOAD_LOCAL(value x4)
-+ 154 IS_INSTANCE REF(class MyException)
-+ 154 CZJUMP (BOOL)NE ? 5 : 8
-+
- 16:
-@@ -1053,5 +1132,2 @@
- 145 SCOPE_ENTER value x4
-- 145 JUMP 4
--
-- 4:
- 154 LOAD_LOCAL(value x4)
-@@ -1065,8 +1141,5 @@
- 154 SCOPE_ENTER value x5
-- 154 LOAD_LOCAL(value x5)
-- 154 CALL_METHOD MyException.message (dynamic)
-- 154 STORE_LOCAL(value message)
-- 154 SCOPE_ENTER value message
- 154 LOAD_MODULE object Predef
-- 154 LOAD_LOCAL(value message)
-+ ? LOAD_LOCAL(value x5)
-+ 154 CALL_METHOD MyException.message (dynamic)
- 154 CALL_METHOD scala.Predef.println (dynamic)
-@@ -1287,3 +1360,3 @@
- startBlock: 1
-- blocks: [1,2,3,4,5,7]
-+ blocks: [1,2,3,4,5,7,8]
-
-@@ -1311,4 +1384,11 @@
- 38 CALL_METHOD java.lang.IllegalArgumentException.<init> (static-instance)
-- 38 THROW(IllegalArgumentException)
-+ ? STORE_LOCAL(value e)
-+ ? JUMP 8
-
-+ 8:
-+ 42 LOAD_MODULE object Predef
-+ 42 CONSTANT("IllegalArgumentException")
-+ 42 CALL_METHOD scala.Predef.println (dynamic)
-+ 42 JUMP 2
-+
- 7:
-@@ -1358,5 +1438,5 @@
- def main(args: Array[String] (ARRAY[REF(class String)])): Unit {
-- locals: value args, variable result, value ex6, value x4, value x5, value message, value x
-+ locals: value args, variable result, value ex6, value x4, value x5, value x
- startBlock: 1
-- blocks: [1,2,3,4,5,8,10,11,13,14,16]
-+ blocks: [1,2,3,5,8,10,11,13,14,16,17]
-
-@@ -1384,3 +1464,4 @@
- 203 CALL_METHOD MyException.<init> (static-instance)
-- 203 THROW(MyException)
-+ ? STORE_LOCAL(value ex6)
-+ ? JUMP 17
-
-@@ -1404,4 +1485,13 @@
- 209 CALL_METHOD MyException.<init> (static-instance)
-- 209 THROW(MyException)
-+ ? STORE_LOCAL(value ex6)
-+ ? JUMP 17
-
-+ 17:
-+ 200 LOAD_LOCAL(value ex6)
-+ 200 STORE_LOCAL(value x4)
-+ 200 SCOPE_ENTER value x4
-+ 212 LOAD_LOCAL(value x4)
-+ 212 IS_INSTANCE REF(class MyException)
-+ 212 CZJUMP (BOOL)NE ? 5 : 8
-+
- 16:
-@@ -1417,5 +1507,2 @@
- 200 SCOPE_ENTER value x4
-- 200 JUMP 4
--
-- 4:
- 212 LOAD_LOCAL(value x4)
-@@ -1429,8 +1516,5 @@
- 212 SCOPE_ENTER value x5
-- 212 LOAD_LOCAL(value x5)
-- 212 CALL_METHOD MyException.message (dynamic)
-- 212 STORE_LOCAL(value message)
-- 212 SCOPE_ENTER value message
- 213 LOAD_MODULE object Predef
-- 213 LOAD_LOCAL(value message)
-+ ? LOAD_LOCAL(value x5)
-+ 213 CALL_METHOD MyException.message (dynamic)
- 213 CALL_METHOD scala.Predef.println (dynamic)
-@@ -1478,3 +1562,3 @@
- startBlock: 1
-- blocks: [1,2,3,4,5,7]
-+ blocks: [1,2,3,4,5,7,8]
-
-@@ -1502,4 +1586,11 @@
- 58 CALL_METHOD java.lang.IllegalArgumentException.<init> (static-instance)
-- 58 THROW(IllegalArgumentException)
-+ ? STORE_LOCAL(value e)
-+ ? JUMP 8
-
-+ 8:
-+ 62 LOAD_MODULE object Predef
-+ 62 CONSTANT("RuntimeException")
-+ 62 CALL_METHOD scala.Predef.println (dynamic)
-+ 62 JUMP 2
-+
- 7:
-@@ -1551,3 +1642,3 @@
- startBlock: 1
-- blocks: [1,3,4]
-+ blocks: [1,3,4,5]
-
-@@ -1571,4 +1662,9 @@
- 229 CALL_METHOD MyException.<init> (static-instance)
-- 229 THROW(MyException)
-+ ? JUMP 5
-
-+ 5:
-+ ? LOAD_LOCAL(variable monitor1)
-+ 228 MONITOR_EXIT
-+ 228 THROW(Throwable)
-+
- 3:
-@@ -1577,3 +1673,3 @@
- 228 MONITOR_EXIT
-- ? THROW(Throwable)
-+ 228 THROW(Throwable)
-
-@@ -1605,5 +1701,5 @@
- def main(args: Array[String] (ARRAY[REF(class String)])): Unit {
-- locals: value args, variable result, variable monitor2, variable monitorResult1
-+ locals: value exception$1, value args, variable result, variable monitor2, variable monitorResult1
- startBlock: 1
-- blocks: [1,3,4]
-+ blocks: [1,3,4,5]
-
-@@ -1630,4 +1726,12 @@
- 245 CALL_METHOD MyException.<init> (static-instance)
-- 245 THROW(MyException)
-+ ? STORE_LOCAL(value exception$1)
-+ ? DROP ConcatClass
-+ ? LOAD_LOCAL(value exception$1)
-+ ? JUMP 5
-
-+ 5:
-+ ? LOAD_LOCAL(variable monitor2)
-+ 244 MONITOR_EXIT
-+ 244 THROW(Throwable)
-+
- 3:
-@@ -1636,3 +1740,3 @@
- 244 MONITOR_EXIT
-- ? THROW(Throwable)
-+ 244 THROW(Throwable)
diff --git a/test/pending/run/inline-ex-handlers.scala b/test/pending/run/inline-ex-handlers.scala
deleted file mode 100644
index 964594d258..0000000000
--- a/test/pending/run/inline-ex-handlers.scala
+++ /dev/null
@@ -1,329 +0,0 @@
-import scala.tools.partest.IcodeComparison
-
-object Test extends IcodeComparison {
- override def printIcodeAfterPhase = "inlinehandlers"
-}
-
-import scala.util.Random._
-
-/** There should be no inlining taking place in this class */
-object TestInlineHandlersNoInline {
-
- def main(args: Array[String]): Unit = {
- println("TestInlineHandlersNoInline")
- var result = -1
-
- try {
- if (nextInt % 2 == 0)
- throw new IllegalArgumentException("something")
- result = 1
- } catch {
- case e: StackOverflowError =>
- println("Stack overflow")
- }
-
- result
- }
-}
-
-/** Just a simple inlining should take place in this class */
-object TestInlineHandlersSimpleInline {
-
- def main(args: Array[String]): Unit = {
- println("TestInlineHandlersSimpleInline")
- var result = -1
-
- try {
- if (nextInt % 2 == 0)
- throw new IllegalArgumentException("something")
- result = 1
- } catch {
- case e: IllegalArgumentException =>
- println("IllegalArgumentException")
- }
-
- result
- }
-}
-
-/** Inlining should take place because the handler is taking a superclass of the exception thrown */
-object TestInlineHandlersSubclassInline {
-
- def main(args: Array[String]): Unit = {
- println("TestInlineHandlersSubclassInline")
- var result = -1
-
- try {
- if (nextInt % 2 == 0)
- throw new IllegalArgumentException("something")
- result = 1
- } catch {
- case e: RuntimeException =>
- println("RuntimeException")
- }
-
- result
- }
-}
-
-/** For this class, the finally handler should be inlined */
-object TestInlineHandlersFinallyInline {
-
- def main(args: Array[String]): Unit = {
- println("TestInlineHandlersFinallyInline")
- var result = -1
-
- try {
- if (nextInt % 2 == 0)
- throw new IllegalArgumentException("something")
- result = 1
- } catch {
- case e: Exception => throw e
- } finally {
- println("finally")
- result = (result - 1) / 2
- }
-
- result
- }
-}
-
-
-case class MyException(message: String) extends RuntimeException(message)
-
-/** For this class, we test inlining for a case class error */
-object TestInlineHandlersCaseClassExceptionInline {
-
- def main(args: Array[String]): Unit = {
- println("TestInlineHandlersCaseClassExceptionInline")
- var result = -1
-
- try {
- if (nextInt % 2 == 0)
- throw new MyException("something")
- result = 1
- } catch {
- case MyException(message) => println(message)
- }
-
- result
- }
-}
-
-
-/** For this class, inline should take place in the inner handler */
-object TestInlineHandlersNestedHandlerInnerInline {
-
- def main(args: Array[String]): Unit = {
- println("TestInlineHandlersNestedHandlersInnerInline")
- var result = -1
-
- try {
- try {
- if (nextInt % 2 == 0)
- throw new MyException("something")
- result = 1
- } catch {
- case MyException(message) => println(message)
- }
- } catch {
- case e: IllegalArgumentException => println("IllegalArgumentException")
- }
-
- result
- }
-}
-
-
-/** For this class, inline should take place in the outer handler */
-object TestInlineHandlersNestedHandlerOuterInline {
-
- def main(args: Array[String]): Unit = {
- println("TestInlineHandlersNestedHandlersOuterInline")
- var result = -1
-
- try {
- try {
- if (nextInt % 2 == 0)
- throw new MyException("something")
- result = 1
- } catch {
- case e: IllegalArgumentException => println("IllegalArgumentException")
- }
- } catch {
- case MyException(message) => println(message)
- }
-
- result
- }
-}
-
-
-/** For this class, inline should take place in the all handlers (inner, outer and finally) */
-object TestInlineHandlersNestedHandlerAllInline {
-
- def main(args: Array[String]): Unit = {
- println("TestInlineHandlersNestedHandlersOuterInline")
- var result = -1
-
- try {
- try {
- if (nextInt % 2 == 0)
- throw new MyException("something")
- result = 1
- } catch {
- case MyException(message) =>
- println(message)
- throw MyException(message)
- }
- } catch {
- case MyException(message) =>
- println(message)
- throw MyException(message)
- } finally {
- println("finally")
- result = (result - 1) / 2
- }
-
- result
- }
-}
-
-
-/** This class is meant to test whether the inline handler is copied only once for multiple inlines */
-object TestInlineHandlersSingleCopy {
-
- def main(args: Array[String]): Unit = {
- println("TestInlineHandlersSingleCopy")
- var result = -1
-
- try {
-
- if (nextInt % 2 == 0)
- throw new MyException("something")
-
- println("A side effect in the middle")
- result = 3 // another one
-
- if (nextInt % 3 == 2)
- throw new MyException("something else")
- result = 1
- } catch {
- case MyException(message) =>
- println(message)
- }
-
- result
- }
-}
-
-/** This should test the special exception handler for synchronized blocks */
-object TestInlineHandlersSynchronized {
-
- def main(args: Array[String]): Unit = {
- println("TestInlineHandlersSynchronized")
- var result = "hello"
-
- // any exception thrown here will be caught by a default handler that does MONTIOR_EXIT on result :)
- result.synchronized {
- throw MyException(result)
- }
-
- result.length
- }
-}
-
-/** This should test the special exception handler for synchronized blocks with stack */
-object TestInlineHandlersSynchronizedWithStack {
-
- def main(args: Array[String]): Unit = {
- println("TestInlineHandlersSynchronizedWithStack")
- var result = "hello"
-
- // any exception thrown here will be caught by a default handler that does MONTIOR_EXIT on result :)
- result = "abc" + result.synchronized {
- throw MyException(result)
- }
-
- result.length
- }
-}
-
-/** This test should trigger a bug in the dead code elimination phase - it actually crashes ICodeCheckers
-object TestInlineHandlersSynchronizedWithStackDoubleThrow {
-
- def main(args: Array[String]): Unit = {
- println("TestInlineHandlersSynchronizedWithStackDoubleThrow")
- var result = "a"
-
- // any exception thrown here will be caught by a default handler that does MONTIOR_EXIT on result :)
- result += result.synchronized { throw MyException(result) }
- result += result.synchronized { throw MyException(result) }
-
- result.length
- }
-}
-*/
-
-/** This test should check the preciseness of the inliner: it should not do any inlining here
-* as it is not able to discern between the different exceptions
-*/
-object TestInlineHandlersPreciseness {
-
- def main(args: Array[String]): Unit = {
- println("TestInlineHandlersCorrectHandler")
-
- try {
- val exception: Throwable =
- if (scala.util.Random.nextInt % 2 == 0)
- new IllegalArgumentException("even")
- else
- new StackOverflowError("odd")
- throw exception
- } catch {
- case e: IllegalArgumentException =>
- println("Correct, IllegalArgumentException")
- case e: StackOverflowError =>
- println("Correct, StackOverflowException")
- case t: Throwable =>
- println("WROOOONG, not Throwable!")
- }
- }
-}
-
-/** This check should verify that the double no-local exception handler is duplicated correctly */
-object TestInlineHandlersDoubleNoLocal {
-
- val a1: String = "a"
- val a2: String = "b"
-
- def main(args: Array[String]): Unit = {
- println("TestInlineHandlersDoubleNoLocal")
-
- try {
- a1.synchronized {
- a2. synchronized {
- throw new MyException("crash")
- }
- }
- } catch {
- case t: Throwable => println("Caught crash: " + t.toString)
- }
-
- /* try {
- val exception: Throwable =
- if (scala.util.Random.nextInt % 2 == 0)
- new IllegalArgumentException("even")
- else
- new StackOverflowError("odd")
- throw exception
- } catch {
- case e: IllegalArgumentException =>
- println("Correct, IllegalArgumentException")
- case e: StackOverflowError =>
- println("Correct, StackOverflowException")
- case t: Throwable =>
- println("WROOOONG, not Throwable!")
- }*/
- }
-}
diff --git a/test/pending/run/instanceOfAndTypeMatching.scala b/test/pending/run/instanceOfAndTypeMatching.scala
deleted file mode 100644
index e04ae13585..0000000000
--- a/test/pending/run/instanceOfAndTypeMatching.scala
+++ /dev/null
@@ -1,192 +0,0 @@
-// Summary of incorrect or questionable behavior.
-// Full code and successful parts follow.
-
-object Summary {
- class Outer {
- class Inner { }
- def f() = { class MethodInner ; new MethodInner }
- }
-
- // 1 static issue:
- //
- // Given method in MethodInner: def g(other: MethodInner) = ()
- // method1.g(method1) fails to compile with type error.
- //
- // Note that this cannot be worked around by widening the return type
- // of f() because MethodInner is declared inside of f. So there is no way
- // I see for a class declared inside a method to receive members of its
- // own declared type -- not only the narrow type of those from this
- // instance, but ANY members, because there is no Foo#Bar syntax which will
- // traverse a method.
- //
- // 4 runtime issues:
- //
- // From the outside: inner1.isInstanceOf[outer2.Inner] is true, should (maybe) be false
- // From inside inner1: inner2.isInstanceOf[Outer.this.Inner] is true, should (maybe) be false
- // From the outside: inner1 match { case _: outer2.Inner => true ... } is true, should definitely be false
- // From inside method1: method2 match { case _: MethodInner => true ... } is true, should definitely be false
- //
- // Note that the fact that every test returns true on instances of MethodInner means
- // that it is impossible to draw any type distinction between instances. As far as one
- // can tell, they are all of the same type regardless not only of whether they were
- // created on the same method invocation but whether they are contained in the same
- // instance of Outer.
- //
- // WRT "same method invocation", see Iterator.duplicate for an example of this.
-}
-
-// Tests
-
-class Outer {
- class Inner {
- def passOuter(other: Outer) = () // pass any Outer
- def passThisType(other: Outer.this.type) = () // pass only this Outer instance
- def passInner(other: Inner) = () // pass only Inners from this Outer instance
- def passInner2(other: Outer.this.Inner) = () // same as above
- def passInnerSharp(other: Outer#Inner) = () // pass any Inner
-
- def compareSimpleWithTypeMatch(other: Any) = other match {
- case _: Inner => true
- case _ => false
- }
- def compareSimpleWithInstanceOf(other: Any) = other.isInstanceOf[Inner]
-
- def compareSharpWithTypeMatch(other: Any) = {
- other match {
- case _: Outer#Inner => true
- case _ => false
- }
- }
- def compareSharpWithInstanceOf(other: Any) = other.isInstanceOf[Outer#Inner]
-
- def comparePathWithTypeMatch(other: Any) = other match {
- case _: Outer.this.Inner => true
- case _ => false
- }
- def comparePathWithInstanceOf(other: Any) = other.isInstanceOf[Outer.this.Inner]
- }
-
- def f() = {
- class MethodInner {
- def passOuter(other: Outer) = () // pass any Outer
- def passThisType(other: Outer.this.type) = () // pass only this Outer instance
- def passInner(other: Inner) = () // pass only Inners from this Outer instance
- def passInner2(other: Outer.this.Inner) = () // same as above
- def passInnerSharp(other: Outer#Inner) = () // pass any Inner
- def passMethodInner(other: MethodInner) = () // pass only MethodInners from this Outer instance
- // is there any way to refer to Outer#MethodInner? Not that there should be.
-
- def compareWithInstanceOf(other: Any) = other.isInstanceOf[MethodInner]
- def compareWithTypeMatch(other: Any) = other match {
- case _: MethodInner => true
- case _ => false
- }
- }
-
- new MethodInner
- }
-}
-
-object Test {
- val outer1 = new Outer
- val outer2 = new Outer
- val inner1 = new outer1.Inner
- val inner2 = new outer2.Inner
- val method1 = outer1.f()
- val method2 = outer2.f()
-
- def testInnerStatic = {
- // these should all work
- inner1.passOuter(outer1)
- inner1.passOuter(outer2)
- inner1.passThisType(outer1)
- inner1.passInner(inner1)
- inner1.passInner2(inner1)
- inner1.passInnerSharp(inner1)
- inner1.passInnerSharp(inner2)
-
- // these should all fail to compile, and do
- //
- // inner1.passThisType(outer2)
- // inner1.passInner(inner2)
- // inner1.passInner2(inner2)
- }
- def testInnerRuntime = {
- println("testInnerRuntime\n")
-
- List("These should be true under any scenario: ",
- inner1.isInstanceOf[outer1.Inner] ,
- inner1.isInstanceOf[Outer#Inner] ,
- (inner1: Any) match { case _: Outer#Inner => true ; case _ => false } ,
- (inner1: Any) match { case _: outer1.Inner => true ; case _ => false } ,
- inner1.compareSharpWithTypeMatch(inner2) ,
- inner1.compareSharpWithInstanceOf(inner2)
- ) foreach println
-
- List("These should be true under current proposal: ",
- inner1.compareSimpleWithInstanceOf(inner2)
- ) foreach println
-
- List("These should be false under current proposal: ",
- inner1.compareSimpleWithTypeMatch(inner2) ,
- inner1.comparePathWithTypeMatch(inner2)
- ) foreach println
-
- List("These return true but I think should return false: ",
- inner1.isInstanceOf[outer2.Inner] , // true
- inner1.comparePathWithInstanceOf(inner2) // true
- ) foreach println
-
- List("These are doing the wrong thing under current proposal",
- (inner1: Any) match { case _: outer2.Inner => true ; case _ => false } // should be false
- ) foreach println
- }
-
- def testMethodInnerStatic = {
- // these should all work
- method1.passOuter(outer1)
- method1.passOuter(outer2)
- method1.passThisType(outer1)
- method1.passInner(inner1)
- method1.passInner2(inner1)
- method1.passInnerSharp(inner1)
- method1.passInnerSharp(inner2)
- // This fails with:
- //
- // a.scala:114: error: type mismatch;
- // found : Test.method1.type (with underlying type MethodInner forSome { type MethodInner <: java.lang.Object with ScalaObject{def passOuter(other: Outer): Unit; def passThisType(other: Test.outer1.type): Unit; def passInner(other: Test.outer1.Inner): Unit; def passInner2(other: Test.outer1.Inner): Unit; def passInnerSharp(other: Outer#Inner): Unit; def passMethodInner(other: MethodInner): Unit} })
- // required: MethodInner where type MethodInner <: java.lang.Object with ScalaObject{def passOuter(other: Outer): Unit; def passThisType(other: Test.outer1.type): Unit; def passInner(other: Test.outer1.Inner): Unit; def passInner2(other: Test.outer1.Inner): Unit; def passInnerSharp(other: Outer#Inner): Unit; def passMethodInner(other: MethodInner): Unit}
- // method1.passMethodInner(method1)
- // ^
- method1.passMethodInner(method1)
-
- // these should all fail to compile, and do
- //
- // method1.passThisType(outer2)
- // method1.passInner(inner2)
- // method1.passInner2(inner2)
- // method1.passMethodInner(method2)
- }
-
- def testMethodInnerRuntime = {
- println("\ntestMethodInnerRuntime\n")
-
- List("These should be true under any scenario: ",
- method1.compareWithInstanceOf(method1) ,
- method1.compareWithTypeMatch(method1)
- ) foreach println
-
- List("These should be true under current proposal: ",
- method1.compareWithInstanceOf(method2)
- ) foreach println
-
- List("These are doing the wrong thing under current proposal",
- method1.compareWithTypeMatch(method2) // should be false
- ) foreach println
- }
-
- def main(args: Array[String]): Unit = {
- testInnerRuntime
- testMethodInnerRuntime
- }
-}
diff --git a/test/pending/run/jar-version.scala b/test/pending/run/jar-version.scala
deleted file mode 100644
index b79dfe733d..0000000000
--- a/test/pending/run/jar-version.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-import scala.util.Properties._
-import scala.tools.nsc.util.ClassPath._
-
-object Test {
- def main(args: Array[String]): Unit = {
- infoFor(this).jarManifestMainAttrs get ScalaCompilerVersion match {
- case Some(v) => println("I was built by scala compiler version " + v)
- case _ => println("I was not apprised of which scala compiler version built me.")
- }
- }
-}
diff --git a/test/pending/run/macro-expand-default.flags b/test/pending/run/macro-expand-default.flags
deleted file mode 100644
index cd66464f2f..0000000000
--- a/test/pending/run/macro-expand-default.flags
+++ /dev/null
@@ -1 +0,0 @@
--language:experimental.macros \ No newline at end of file
diff --git a/test/pending/run/macro-expand-default/Impls_1.scala b/test/pending/run/macro-expand-default/Impls_1.scala
deleted file mode 100644
index fd5d8d7f18..0000000000
--- a/test/pending/run/macro-expand-default/Impls_1.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-import scala.reflect.macros.blackbox.Context
-
-object Impls {
- def foo(c: Context)(x: c.Expr[Int], y: c.Expr[Int]) = {
- import c.universe._
- val sum = Apply(Select(x.tree, TermName("$minus")), List(y.tree))
- val body = Apply(Select(Ident(definitions.PredefModule), TermName("println")), List(sum))
- Expr[Unit](body)
- }
-} \ No newline at end of file
diff --git a/test/pending/run/macro-expand-default/Macros_Test_2.scala b/test/pending/run/macro-expand-default/Macros_Test_2.scala
deleted file mode 100644
index 92fe84d04a..0000000000
--- a/test/pending/run/macro-expand-default/Macros_Test_2.scala
+++ /dev/null
@@ -1,8 +0,0 @@
-object Test extends App {
- def foo(x: Int = 2, y: Int = -40) = macro Impls.foo
- foo(y = -40, x = 2)
- foo(x = 2, y = -40)
- foo(x = 100)
- foo(y = 100)
- foo()
-} \ No newline at end of file
diff --git a/test/pending/run/macro-expand-implicit-macro-defeats-type-inference.check b/test/pending/run/macro-expand-implicit-macro-defeats-type-inference.check
deleted file mode 100644
index e7cb9c367b..0000000000
--- a/test/pending/run/macro-expand-implicit-macro-defeats-type-inference.check
+++ /dev/null
@@ -1,6 +0,0 @@
-openImplicits are: List()
-enclosingImplicits are: List((List[Int],scala.this.Predef.implicitly[List[Int]]))
-typetag is: TypeTag[Nothing]
-openImplicits are: List()
-enclosingImplicits are: List((List[String],Test.this.bar[String]))
-typetag is: TypeTag[Nothing]
diff --git a/test/pending/run/macro-expand-implicit-macro-defeats-type-inference.flags b/test/pending/run/macro-expand-implicit-macro-defeats-type-inference.flags
deleted file mode 100644
index cd66464f2f..0000000000
--- a/test/pending/run/macro-expand-implicit-macro-defeats-type-inference.flags
+++ /dev/null
@@ -1 +0,0 @@
--language:experimental.macros \ No newline at end of file
diff --git a/test/pending/run/macro-expand-implicit-macro-defeats-type-inference/Impls_1.scala b/test/pending/run/macro-expand-implicit-macro-defeats-type-inference/Impls_1.scala
deleted file mode 100644
index e8170fda07..0000000000
--- a/test/pending/run/macro-expand-implicit-macro-defeats-type-inference/Impls_1.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-import scala.reflect.macros.whitebox.Context
-
-object Impls {
- def foo[T: c.WeakTypeTag](c: Context): c.Expr[List[T]] = c.universe.reify {
- println("openImplicits are: " + c.literal(c.openImplicits.toString).splice)
- println("enclosingImplicits are: " + c.literal(c.enclosingImplicits.toString).splice)
- println("typetag is: " + c.literal(c.tag[T].toString).splice)
- null
- }
-} \ No newline at end of file
diff --git a/test/pending/run/macro-expand-implicit-macro-defeats-type-inference/Macros_Test_2.scala b/test/pending/run/macro-expand-implicit-macro-defeats-type-inference/Macros_Test_2.scala
deleted file mode 100644
index 27d0662799..0000000000
--- a/test/pending/run/macro-expand-implicit-macro-defeats-type-inference/Macros_Test_2.scala
+++ /dev/null
@@ -1,6 +0,0 @@
-object Test extends App {
- implicit def foo[T]: List[T] = macro Impls.foo[T]
- def bar[T](implicit foo: List[T]) {}
- implicitly[List[Int]]
- bar[String]
-} \ No newline at end of file
diff --git a/test/pending/run/macro-expand-macro-has-context-bound.check b/test/pending/run/macro-expand-macro-has-context-bound.check
deleted file mode 100644
index ac4213d6e9..0000000000
--- a/test/pending/run/macro-expand-macro-has-context-bound.check
+++ /dev/null
@@ -1 +0,0 @@
-43 \ No newline at end of file
diff --git a/test/pending/run/macro-expand-macro-has-context-bound.flags b/test/pending/run/macro-expand-macro-has-context-bound.flags
deleted file mode 100644
index cd66464f2f..0000000000
--- a/test/pending/run/macro-expand-macro-has-context-bound.flags
+++ /dev/null
@@ -1 +0,0 @@
--language:experimental.macros \ No newline at end of file
diff --git a/test/pending/run/macro-expand-macro-has-context-bound/Impls_1.scala b/test/pending/run/macro-expand-macro-has-context-bound/Impls_1.scala
deleted file mode 100644
index 34182b7968..0000000000
--- a/test/pending/run/macro-expand-macro-has-context-bound/Impls_1.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-import scala.reflect.macros.blackbox.Context
-
-object Impls {
- def foo[U](c: Context)(x: c.Expr[U])(evidence: c.Expr[Numeric[U]]) = {
- import c.universe._
- val plusOne = Apply(Select(evidence.tree, TermName("plus")), List(x.tree, Literal(Constant(1))))
- val body = Apply(Select(Ident(definitions.PredefModule), TermName("println")), List(plusOne))
- Expr[Unit](body)
- }
-} \ No newline at end of file
diff --git a/test/pending/run/macro-expand-macro-has-context-bound/Macros_Test_2.scala b/test/pending/run/macro-expand-macro-has-context-bound/Macros_Test_2.scala
deleted file mode 100644
index 7d16b773a6..0000000000
--- a/test/pending/run/macro-expand-macro-has-context-bound/Macros_Test_2.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-object Test extends App {
- def foo[U: Numeric](x: U) = macro Impls.foo[U]
- foo(42)
-} \ No newline at end of file
diff --git a/test/pending/run/macro-expand-named.flags b/test/pending/run/macro-expand-named.flags
deleted file mode 100644
index cd66464f2f..0000000000
--- a/test/pending/run/macro-expand-named.flags
+++ /dev/null
@@ -1 +0,0 @@
--language:experimental.macros \ No newline at end of file
diff --git a/test/pending/run/macro-expand-named/Impls_1.scala b/test/pending/run/macro-expand-named/Impls_1.scala
deleted file mode 100644
index fd5d8d7f18..0000000000
--- a/test/pending/run/macro-expand-named/Impls_1.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-import scala.reflect.macros.blackbox.Context
-
-object Impls {
- def foo(c: Context)(x: c.Expr[Int], y: c.Expr[Int]) = {
- import c.universe._
- val sum = Apply(Select(x.tree, TermName("$minus")), List(y.tree))
- val body = Apply(Select(Ident(definitions.PredefModule), TermName("println")), List(sum))
- Expr[Unit](body)
- }
-} \ No newline at end of file
diff --git a/test/pending/run/macro-expand-named/Macros_Test_2.scala b/test/pending/run/macro-expand-named/Macros_Test_2.scala
deleted file mode 100644
index abebcf8448..0000000000
--- a/test/pending/run/macro-expand-named/Macros_Test_2.scala
+++ /dev/null
@@ -1,5 +0,0 @@
-object Test extends App {
- def foo(x: Int, y: Int) = macro Impls.foo
- foo(y = -40, x = 2)
- foo(x = 2, y = -40)
-} \ No newline at end of file
diff --git a/test/pending/run/macro-expand-tparams-prefix-e1.check b/test/pending/run/macro-expand-tparams-prefix-e1.check
deleted file mode 100644
index 4fa05a7678..0000000000
--- a/test/pending/run/macro-expand-tparams-prefix-e1.check
+++ /dev/null
@@ -1,3 +0,0 @@
-TypeTag(List[Int])
-TypeTag(String)
-TypeTag(Boolean)
diff --git a/test/pending/run/macro-expand-tparams-prefix-e1.flags b/test/pending/run/macro-expand-tparams-prefix-e1.flags
deleted file mode 100644
index cd66464f2f..0000000000
--- a/test/pending/run/macro-expand-tparams-prefix-e1.flags
+++ /dev/null
@@ -1 +0,0 @@
--language:experimental.macros \ No newline at end of file
diff --git a/test/pending/run/macro-expand-tparams-prefix-e1/Impls_1.scala b/test/pending/run/macro-expand-tparams-prefix-e1/Impls_1.scala
deleted file mode 100644
index 683622b29d..0000000000
--- a/test/pending/run/macro-expand-tparams-prefix-e1/Impls_1.scala
+++ /dev/null
@@ -1,12 +0,0 @@
-import scala.reflect.macros.blackbox.Context
-
-object Impls {
- def foo[T, U: c.WeakTypeTag, V](c: Context)(implicit T: c.WeakTypeTag[T], V: c.WeakTypeTag[V]): c.Expr[Unit] = {
- import c.universe._
- Block(List(
- Apply(Select(Ident(definitions.PredefModule), TermName("println")), List(Literal(Constant(T.toString)))),
- Apply(Select(Ident(definitions.PredefModule), TermName("println")), List(Literal(Constant(implicitly[c.WeakTypeTag[U]].toString)))),
- Apply(Select(Ident(definitions.PredefModule), TermName("println")), List(Literal(Constant(V.toString))))),
- Literal(Constant(())))
- }
-} \ No newline at end of file
diff --git a/test/pending/run/macro-expand-tparams-prefix-e1/Macros_Test_2.scala b/test/pending/run/macro-expand-tparams-prefix-e1/Macros_Test_2.scala
deleted file mode 100644
index d4fc52fca0..0000000000
--- a/test/pending/run/macro-expand-tparams-prefix-e1/Macros_Test_2.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-import scala.reflect.runtime.universe._
-
-object Test extends App {
- class D[T: TypeTag] {
- class C[U: TypeTag] {
- def foo[V] = macro Impls.foo[List[T], U, V]
- foo[Boolean]
- }
- }
-
- val outer1 = new D[Int]
- new outer1.C[String]
-} \ No newline at end of file
diff --git a/test/pending/run/macro-expand-tparams-prefix-f1.check b/test/pending/run/macro-expand-tparams-prefix-f1.check
deleted file mode 100644
index d15226143a..0000000000
--- a/test/pending/run/macro-expand-tparams-prefix-f1.check
+++ /dev/null
@@ -1,3 +0,0 @@
-TypeTag(List[T])
-TypeTag(U)
-TypeTag(Boolean)
diff --git a/test/pending/run/macro-expand-tparams-prefix-f1.flags b/test/pending/run/macro-expand-tparams-prefix-f1.flags
deleted file mode 100644
index cd66464f2f..0000000000
--- a/test/pending/run/macro-expand-tparams-prefix-f1.flags
+++ /dev/null
@@ -1 +0,0 @@
--language:experimental.macros \ No newline at end of file
diff --git a/test/pending/run/macro-expand-tparams-prefix-f1/Impls_1.scala b/test/pending/run/macro-expand-tparams-prefix-f1/Impls_1.scala
deleted file mode 100644
index 683622b29d..0000000000
--- a/test/pending/run/macro-expand-tparams-prefix-f1/Impls_1.scala
+++ /dev/null
@@ -1,12 +0,0 @@
-import scala.reflect.macros.blackbox.Context
-
-object Impls {
- def foo[T, U: c.WeakTypeTag, V](c: Context)(implicit T: c.WeakTypeTag[T], V: c.WeakTypeTag[V]): c.Expr[Unit] = {
- import c.universe._
- Block(List(
- Apply(Select(Ident(definitions.PredefModule), TermName("println")), List(Literal(Constant(T.toString)))),
- Apply(Select(Ident(definitions.PredefModule), TermName("println")), List(Literal(Constant(implicitly[c.WeakTypeTag[U]].toString)))),
- Apply(Select(Ident(definitions.PredefModule), TermName("println")), List(Literal(Constant(V.toString))))),
- Literal(Constant(())))
- }
-} \ No newline at end of file
diff --git a/test/pending/run/macro-expand-tparams-prefix-f1/Macros_Test_2.scala b/test/pending/run/macro-expand-tparams-prefix-f1/Macros_Test_2.scala
deleted file mode 100644
index 9417cf663e..0000000000
--- a/test/pending/run/macro-expand-tparams-prefix-f1/Macros_Test_2.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-import scala.reflect.runtime.universe._
-
-object Test extends App {
- class D[T] {
- class C[U] {
- def foo[V] = macro Impls.foo[List[T], U, V]
- foo[Boolean]
- }
- }
-
- val outer1 = new D[Int]
- new outer1.C[String]
-} \ No newline at end of file
diff --git a/test/pending/run/macro-quasiinvalidbody-a.check b/test/pending/run/macro-quasiinvalidbody-a.check
deleted file mode 100644
index f70d7bba4a..0000000000
--- a/test/pending/run/macro-quasiinvalidbody-a.check
+++ /dev/null
@@ -1 +0,0 @@
-42 \ No newline at end of file
diff --git a/test/pending/run/macro-quasiinvalidbody-a.flags b/test/pending/run/macro-quasiinvalidbody-a.flags
deleted file mode 100644
index cd66464f2f..0000000000
--- a/test/pending/run/macro-quasiinvalidbody-a.flags
+++ /dev/null
@@ -1 +0,0 @@
--language:experimental.macros \ No newline at end of file
diff --git a/test/pending/run/macro-quasiinvalidbody-a/Impls_1.scala b/test/pending/run/macro-quasiinvalidbody-a/Impls_1.scala
deleted file mode 100644
index 741a921b72..0000000000
--- a/test/pending/run/macro-quasiinvalidbody-a/Impls_1.scala
+++ /dev/null
@@ -1,5 +0,0 @@
-import scala.reflect.macros.blackbox.Context
-
-trait Impls {
- def impl(c: Context)(x: c.Expr[Any]) = x
-} \ No newline at end of file
diff --git a/test/pending/run/macro-quasiinvalidbody-a/Macros_Test_2.scala b/test/pending/run/macro-quasiinvalidbody-a/Macros_Test_2.scala
deleted file mode 100644
index 2735321eae..0000000000
--- a/test/pending/run/macro-quasiinvalidbody-a/Macros_Test_2.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-import scala.reflect.macros.blackbox.Context
-
-object Macros extends Impls {
- def foo(x: Any) = macro impl
-}
-
-object Test extends App {
- import Macros._
- println(foo(42))
-} \ No newline at end of file
diff --git a/test/pending/run/macro-quasiinvalidbody-b.check b/test/pending/run/macro-quasiinvalidbody-b.check
deleted file mode 100644
index f70d7bba4a..0000000000
--- a/test/pending/run/macro-quasiinvalidbody-b.check
+++ /dev/null
@@ -1 +0,0 @@
-42 \ No newline at end of file
diff --git a/test/pending/run/macro-quasiinvalidbody-b.flags b/test/pending/run/macro-quasiinvalidbody-b.flags
deleted file mode 100644
index cd66464f2f..0000000000
--- a/test/pending/run/macro-quasiinvalidbody-b.flags
+++ /dev/null
@@ -1 +0,0 @@
--language:experimental.macros \ No newline at end of file
diff --git a/test/pending/run/macro-quasiinvalidbody-b/Impls_1.scala b/test/pending/run/macro-quasiinvalidbody-b/Impls_1.scala
deleted file mode 100644
index b023d31f05..0000000000
--- a/test/pending/run/macro-quasiinvalidbody-b/Impls_1.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-import scala.reflect.macros.blackbox.Context
-
-trait ImplContainer {
- object Impls {
- def foo(c: Context)(x: c.Expr[Any]) = x
- }
-} \ No newline at end of file
diff --git a/test/pending/run/macro-quasiinvalidbody-b/Macros_Test_2.scala b/test/pending/run/macro-quasiinvalidbody-b/Macros_Test_2.scala
deleted file mode 100644
index 639d93fb5f..0000000000
--- a/test/pending/run/macro-quasiinvalidbody-b/Macros_Test_2.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-import scala.reflect.macros.blackbox.Context
-
-object Macros extends ImplContainer {
- def foo(x: Any) = macro Impls.foo
-}
-
-object Test extends App {
- import Macros._
- println(foo(42))
-} \ No newline at end of file
diff --git a/test/pending/run/macro-reify-array.flags b/test/pending/run/macro-reify-array.flags
deleted file mode 100644
index cd66464f2f..0000000000
--- a/test/pending/run/macro-reify-array.flags
+++ /dev/null
@@ -1 +0,0 @@
--language:experimental.macros \ No newline at end of file
diff --git a/test/pending/run/macro-reify-array/Macros_1.scala b/test/pending/run/macro-reify-array/Macros_1.scala
deleted file mode 100644
index eea0133feb..0000000000
--- a/test/pending/run/macro-reify-array/Macros_1.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-import scala.reflect.macros.blackbox.Context
-
-object Macros {
- def foo[T](s: String) = macro Impls.foo[T]
-
- object Impls {
- def foo[T: c.WeakTypeTag](c: Context)(s: c.Expr[T]) = c.universe.reify {
- Array(s.splice)
- }
- }
-} \ No newline at end of file
diff --git a/test/pending/run/macro-reify-array/Test_2.scala b/test/pending/run/macro-reify-array/Test_2.scala
deleted file mode 100644
index e40d5b40e0..0000000000
--- a/test/pending/run/macro-reify-array/Test_2.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-object Test extends App {
- val arr = Macros.foo("hello", "world")
- println(arr.getClass)
-} \ No newline at end of file
diff --git a/test/pending/run/macro-reify-groundtypetag-hktypeparams-tags.check b/test/pending/run/macro-reify-groundtypetag-hktypeparams-tags.check
deleted file mode 100644
index 7e4b000c52..0000000000
--- a/test/pending/run/macro-reify-groundtypetag-hktypeparams-tags.check
+++ /dev/null
@@ -1,2 +0,0 @@
-TypeTag(List[Int])
-TypeTag(List[List[Int]])
diff --git a/test/pending/run/macro-reify-groundtypetag-hktypeparams-tags/Test.scala b/test/pending/run/macro-reify-groundtypetag-hktypeparams-tags/Test.scala
deleted file mode 100644
index 3252423375..0000000000
--- a/test/pending/run/macro-reify-groundtypetag-hktypeparams-tags/Test.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-import scala.reflect.runtime.universe._
-
-object Test extends App {
- def fooTypeTagHK[C[_]: TypeTag, T: TypeTag] = {
- println(implicitly[TypeTag[C[T]]])
- println(implicitly[TypeTag[List[C[T]]]])
- }
- fooTypeTagHK[List, Int]
-} \ No newline at end of file
diff --git a/test/pending/run/macro-reify-tagful-b.check b/test/pending/run/macro-reify-tagful-b.check
deleted file mode 100644
index 5bd9fe2156..0000000000
--- a/test/pending/run/macro-reify-tagful-b.check
+++ /dev/null
@@ -1 +0,0 @@
-List(List(hello world))
diff --git a/test/pending/run/macro-reify-tagful-b.flags b/test/pending/run/macro-reify-tagful-b.flags
deleted file mode 100644
index cd66464f2f..0000000000
--- a/test/pending/run/macro-reify-tagful-b.flags
+++ /dev/null
@@ -1 +0,0 @@
--language:experimental.macros \ No newline at end of file
diff --git a/test/pending/run/macro-reify-tagful-b/Macros_1.scala b/test/pending/run/macro-reify-tagful-b/Macros_1.scala
deleted file mode 100644
index f4d8062a14..0000000000
--- a/test/pending/run/macro-reify-tagful-b/Macros_1.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-import scala.reflect.macros.blackbox.Context
-
-object Macros {
- def foo[T](s: T) = macro Impls.foo[List[T]]
-
- object Impls {
- def foo[T: c.WeakTypeTag](c: Context)(s: c.Expr[T]) = c.universe.reify {
- List(s.splice)
- }
- }
-} \ No newline at end of file
diff --git a/test/pending/run/macro-reify-tagful-b/Test_2.scala b/test/pending/run/macro-reify-tagful-b/Test_2.scala
deleted file mode 100644
index 142234901f..0000000000
--- a/test/pending/run/macro-reify-tagful-b/Test_2.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-object Test extends App {
- val list: List[List[String]] = Macros.foo(List("hello world"))
- println(list)
-} \ No newline at end of file
diff --git a/test/pending/run/macro-reify-tagless-b.check b/test/pending/run/macro-reify-tagless-b.check
deleted file mode 100644
index 61ebb4e547..0000000000
--- a/test/pending/run/macro-reify-tagless-b.check
+++ /dev/null
@@ -1,3 +0,0 @@
-error: macro must not return an expr that contains free type variables (namely: T). have you forgot to use c.TypeTag annotations for type parameters external to a reifee?
-
-java.lang.Error: reflective compilation has failed
diff --git a/test/pending/run/macro-reify-tagless-b.flags b/test/pending/run/macro-reify-tagless-b.flags
deleted file mode 100644
index cd66464f2f..0000000000
--- a/test/pending/run/macro-reify-tagless-b.flags
+++ /dev/null
@@ -1 +0,0 @@
--language:experimental.macros \ No newline at end of file
diff --git a/test/pending/run/macro-reify-tagless-b/Impls_Macros_1.scala b/test/pending/run/macro-reify-tagless-b/Impls_Macros_1.scala
deleted file mode 100644
index 1307052394..0000000000
--- a/test/pending/run/macro-reify-tagless-b/Impls_Macros_1.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-import scala.reflect.macros.blackbox.Context
-
-object Macros {
- def foo[T](s: T) = macro Impls.foo[List[T]]
-
- object Impls {
- def foo[T](c: Context)(s: c.Expr[T]) = c.universe.reify {
- List(s.splice)
- }
- }
-} \ No newline at end of file
diff --git a/test/pending/run/macro-reify-tagless-b/Test_2.scala b/test/pending/run/macro-reify-tagless-b/Test_2.scala
deleted file mode 100644
index 09ca6ba30e..0000000000
--- a/test/pending/run/macro-reify-tagless-b/Test_2.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-object Test extends App {
- //val list: List[String] = Macros.foo("hello world")
- //println(list)
-
- import scala.reflect.runtime.universe._
- import scala.reflect.runtime.{currentMirror => cm}
- import scala.tools.reflect.ToolBox
- val tpt = AppliedTypeTree(Ident(definitions.ListClass), List(Ident(definitions.StringClass)))
- val rhs = Apply(Select(Ident(TermName("Macros")), TermName("foo")), List(Literal(Constant("hello world"))))
- val list = ValDef(NoMods, TermName("list"), tpt, rhs)
- val tree = Block(list, Apply(Select(Ident(definitions.PredefModule), TermName("println")), List(Ident(list.name))))
- println(cm.mkToolBox().eval(tree))
-}
diff --git a/test/pending/run/macro-reify-typetag-hktypeparams-notags.check b/test/pending/run/macro-reify-typetag-hktypeparams-notags.check
deleted file mode 100644
index 53acc9184c..0000000000
--- a/test/pending/run/macro-reify-typetag-hktypeparams-notags.check
+++ /dev/null
@@ -1,2 +0,0 @@
-TypeTag(C[T])
-TypeTag(List[C[T]])
diff --git a/test/pending/run/macro-reify-typetag-hktypeparams-notags/Test.scala b/test/pending/run/macro-reify-typetag-hktypeparams-notags/Test.scala
deleted file mode 100644
index c7b1cedcd2..0000000000
--- a/test/pending/run/macro-reify-typetag-hktypeparams-notags/Test.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-import scala.reflect.runtime.universe._
-
-object Test extends App {
- def fooNoTypeTagHK[C[_], T] = {
- println(implicitly[TypeTag[C[T]]])
- println(implicitly[TypeTag[List[C[T]]]])
- }
- fooNoTypeTagHK[List, Int]
-} \ No newline at end of file
diff --git a/test/pending/run/macro-reify-typetag-hktypeparams-tags.check b/test/pending/run/macro-reify-typetag-hktypeparams-tags.check
deleted file mode 100644
index 7e4b000c52..0000000000
--- a/test/pending/run/macro-reify-typetag-hktypeparams-tags.check
+++ /dev/null
@@ -1,2 +0,0 @@
-TypeTag(List[Int])
-TypeTag(List[List[Int]])
diff --git a/test/pending/run/macro-reify-typetag-hktypeparams-tags/Test.scala b/test/pending/run/macro-reify-typetag-hktypeparams-tags/Test.scala
deleted file mode 100644
index 3252423375..0000000000
--- a/test/pending/run/macro-reify-typetag-hktypeparams-tags/Test.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-import scala.reflect.runtime.universe._
-
-object Test extends App {
- def fooTypeTagHK[C[_]: TypeTag, T: TypeTag] = {
- println(implicitly[TypeTag[C[T]]])
- println(implicitly[TypeTag[List[C[T]]]])
- }
- fooTypeTagHK[List, Int]
-} \ No newline at end of file
diff --git a/test/pending/run/macro-term-declared-in-anonymous-explicit-import/Impls_1.scala b/test/pending/run/macro-term-declared-in-anonymous-explicit-import/Impls_1.scala
deleted file mode 100644
index c43f5f3f53..0000000000
--- a/test/pending/run/macro-term-declared-in-anonymous-explicit-import/Impls_1.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-import scala.reflect.macros.blackbox.Context
-
-object Impls {
- def foo(c: Context) = {
- import c.{prefix => prefix}
- import c.universe._
- val printPrefix = Apply(Select(Ident(definitions.PredefModule), TermName("println")), List(Literal(Constant("prefix = " + prefix))))
- val body = Block(List(printPrefix), Apply(Select(Ident(definitions.PredefModule), TermName("println")), List(Literal(Constant("it works")))))
- c.Expr[Unit](body)
- }
-} \ No newline at end of file
diff --git a/test/pending/run/macro-term-declared-in-anonymous-explicit-import/Macros_Test_2.scala b/test/pending/run/macro-term-declared-in-anonymous-explicit-import/Macros_Test_2.scala
deleted file mode 100644
index dd2317b1b7..0000000000
--- a/test/pending/run/macro-term-declared-in-anonymous-explicit-import/Macros_Test_2.scala
+++ /dev/null
@@ -1,6 +0,0 @@
-import language.experimental.macros
-
-object Test extends App {
- val macros = new { def foo = macro Impls.foo }
- macros.foo
-} \ No newline at end of file
diff --git a/test/pending/run/origins.check b/test/pending/run/origins.check
deleted file mode 100644
index af94b549d3..0000000000
--- a/test/pending/run/origins.check
+++ /dev/null
@@ -1,4 +0,0 @@
-
->> Origins tag 'boop' logged 65 calls from 1 distinguished sources.
-
- 65 null
diff --git a/test/pending/run/origins.flags b/test/pending/run/origins.flags
deleted file mode 100644
index 690753d807..0000000000
--- a/test/pending/run/origins.flags
+++ /dev/null
@@ -1 +0,0 @@
--no-specialization -Ydelambdafy:inline \ No newline at end of file
diff --git a/test/pending/run/origins.scala b/test/pending/run/origins.scala
deleted file mode 100644
index 6529351d3c..0000000000
--- a/test/pending/run/origins.scala
+++ /dev/null
@@ -1,21 +0,0 @@
-import scala.reflect.internal.util.Origins
-
-package goxbox {
- object Socks {
- val origins = Origins("boop")
-
- def boop(x: Int): Int = origins { 5 }
- }
-}
-
-object Test {
- import goxbox.Socks.boop
-
- def f1() = 1 to 5 map boop
- def f2() = 1 to 10 map boop
- def f3() = 1 to 50 map boop
-
- def main(args: Array[String]): Unit = {
- f1() ; f2() ; f3()
- }
-}
diff --git a/test/pending/run/partial-anyref-spec.check b/test/pending/run/partial-anyref-spec.check
deleted file mode 100644
index 26e41933e7..0000000000
--- a/test/pending/run/partial-anyref-spec.check
+++ /dev/null
@@ -1,13 +0,0 @@
-Fn$mcII$sp
-Fn$mcLI$sp
-Fn$mcLI$sp
-Fn$mcIL$sp
-Fn
-Fn
-Fn$mcIL$sp
-Fn
-Fn
-Fn3
-Fn3$mcLIDF$sp
-Fn3$mcBIDF$sp
-Fn3
diff --git a/test/pending/run/partial-anyref-spec.scala b/test/pending/run/partial-anyref-spec.scala
deleted file mode 100644
index 49ed514f03..0000000000
--- a/test/pending/run/partial-anyref-spec.scala
+++ /dev/null
@@ -1,31 +0,0 @@
-class Fn[@specialized(Int, AnyRef) -T, @specialized(Int, AnyRef) +R] {
- override def toString = getClass.getName
-}
-
-class Fn3[
- @specialized(Int, AnyRef) -T1,
- @specialized(Double, AnyRef) -T2,
- @specialized(Float) -T3,
- @specialized(Byte, AnyRef) +R
-] {
- override def toString = getClass.getName
-}
-
-object Test {
- def main(args: Array[String]): Unit = {
- println(new Fn[Int, Int])
- println(new Fn[Int, Byte])
- println(new Fn[Int, AnyRef])
- println(new Fn[Byte, Int])
- println(new Fn[Byte, Byte])
- println(new Fn[Byte, AnyRef])
- println(new Fn[AnyRef, Int])
- println(new Fn[AnyRef, Byte])
- println(new Fn[AnyRef, AnyRef])
-
- println(new Fn3[Int, Int, Int, Int])
- println(new Fn3[Int, Double, Float, Int])
- println(new Fn3[Int, Double, Float, Byte])
- println(new Fn3[AnyRef, Double, AnyRef, Int])
- }
-}
diff --git a/test/pending/run/reflection-mem-eval.scala b/test/pending/run/reflection-mem-eval.scala
deleted file mode 100644
index 9045c44cd6..0000000000
--- a/test/pending/run/reflection-mem-eval.scala
+++ /dev/null
@@ -1,26 +0,0 @@
-import scala.tools.partest.MemoryTest
-
-trait A { type T <: A }
-trait B { type T <: B }
-
-object Test extends MemoryTest {
- lazy val tb = {
- import scala.reflect.runtime.universe._
- import scala.reflect.runtime.{currentMirror => cm}
- import scala.tools.reflect.ToolBox
- cm.mkToolBox()
- }
-
- override def maxDelta = 10
- override def calcsPerIter = 3
- override def calc() {
- var snippet = """
- trait A { type T <: A }
- trait B { type T <: B }
- def foo[T](x: List[T]) = x
- foo(List(new A {}, new B {}))
- """.trim
- snippet = snippet + "\n" + (List.fill(50)(snippet.split("\n").last) mkString "\n")
- tb.eval(tb.parse(snippet))
- }
-} \ No newline at end of file
diff --git a/test/pending/run/reify_addressbook.check b/test/pending/run/reify_addressbook.check
deleted file mode 100644
index 4e12f87bdc..0000000000
--- a/test/pending/run/reify_addressbook.check
+++ /dev/null
@@ -1,30 +0,0 @@
-<html>
- <head>
- <title>
- My Address Book
- </title>
- <style type="text/css"> table { border-right: 1px solid #cccccc; }
- th { background-color: #cccccc; }
- td { border-left: 1px solid #acacac; }
- td { border-bottom: 1px solid #acacac;
- </style>
- </head>
- <body>
- <table cellspacing="0" cellpadding="2">
- <tr>
- <th>Name</th>
- <th>Age</th>
- </tr>
- <tr>
- <td> Tom </td>
- <td> 20 </td>
- </tr><tr>
- <td> Bob </td>
- <td> 22 </td>
- </tr><tr>
- <td> James </td>
- <td> 19 </td>
- </tr>
- </table>
- </body>
- </html>
diff --git a/test/pending/run/reify_addressbook.scala b/test/pending/run/reify_addressbook.scala
deleted file mode 100644
index d53a0f7bc0..0000000000
--- a/test/pending/run/reify_addressbook.scala
+++ /dev/null
@@ -1,65 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.Eval
-
-object Test extends App {
- reify {
- case class Person(name: String, age: Int)
-
- /** An AddressBook takes a variable number of arguments
- * which are accessed as a Sequence
- */
- class AddressBook(a: Person*) {
- private val people: List[Person] = a.toList
-
- /** Serialize to XHTML. Scala supports XML literals
- * which may contain Scala expressions between braces,
- * which are replaced by their evaluation
- */
- def toXHTML =
- <table cellpadding="2" cellspacing="0">
- <tr>
- <th>Name</th>
- <th>Age</th>
- </tr>
- { for (p <- people) yield
- <tr>
- <td> { p.name } </td>
- <td> { p.age.toString() } </td>
- </tr>
- }
- </table>;
- }
-
- /** We introduce CSS using raw strings (between triple
- * quotes). Raw strings may contain newlines and special
- * characters (like \) are not interpreted.
- */
- val header =
- <head>
- <title>
- { "My Address Book" }
- </title>
- <style type="text/css"> {
- """table { border-right: 1px solid #cccccc; }
- th { background-color: #cccccc; }
- td { border-left: 1px solid #acacac; }
- td { border-bottom: 1px solid #acacac;"""}
- </style>
- </head>;
-
- val people = new AddressBook(
- Person("Tom", 20),
- Person("Bob", 22),
- Person("James", 19));
-
- val page =
- <html>
- { header }
- <body>
- { people.toXHTML }
- </body>
- </html>;
-
- println(page)
- }.eval
-}
diff --git a/test/pending/run/reify_brainf_ck.check b/test/pending/run/reify_brainf_ck.check
deleted file mode 100644
index 702bb18394..0000000000
--- a/test/pending/run/reify_brainf_ck.check
+++ /dev/null
@@ -1,4 +0,0 @@
----running---
-Hello World!
-
----done---
diff --git a/test/pending/run/reify_brainf_ck.scala b/test/pending/run/reify_brainf_ck.scala
deleted file mode 100644
index 2af3bca1c7..0000000000
--- a/test/pending/run/reify_brainf_ck.scala
+++ /dev/null
@@ -1,79 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.Eval
-
-object Test extends App {
- reify {
- import scala.annotation._
-
- trait Func[T] {
- val zero: T
- def inc(t: T): T
- def dec(t: T): T
- def in: T
- def out(t: T): Unit
- }
-
- object ByteFunc extends Func[Byte] {
- override val zero: Byte = 0
- override def inc(t: Byte) = ((t + 1) & 0xFF).toByte
- override def dec(t: Byte) = ((t - 1) & 0xFF).toByte
- override def in: Byte = readByte
- override def out(t: Byte) { print(t.toChar) }
- }
-
- case class Tape[T](left: List[T], cell: T, right: List[T])(implicit func: Func[T]) {
- private def headOf(list:List[T]) = if (list.isEmpty) func.zero else list.head
- private def tailOf(list:List[T]) = if (list.isEmpty) Nil else list.tail
- def isZero = cell == func.zero
- def execute(ch: Char) = (ch: @switch) match {
- case '+' => copy(cell = func.inc(cell))
- case '-' => copy(cell = func.dec(cell))
- case '<' => Tape(tailOf(left), headOf(left), cell :: right)
- case '>' => Tape(cell :: left, headOf(right), tailOf(right))
- case '.' => func.out(cell); this
- case ',' => copy(cell = func.in)
- case '[' | ']' => this
- case _ => error("Unexpected token: " + ch)
- }
- }
-
- object Tape {
- def empty[T](func: Func[T]) = Tape(Nil, func.zero, Nil)(func)
- }
-
- class Brainfuck[T](func:Func[T]) {
-
- def execute(p: String) {
- val prog = p.replaceAll("[^\\+\\-\\[\\]\\.\\,\\>\\<]", "")
-
- @tailrec def braceMatcher(pos: Int, stack: List[Int], o2c: Map[Int, Int]): Map[Int,Int] =
- if(pos == prog.length) o2c else (prog(pos): @switch) match {
- case '[' => braceMatcher(pos + 1, pos :: stack, o2c)
- case ']' => braceMatcher(pos + 1, stack.tail, o2c + (stack.head -> pos))
- case _ => braceMatcher(pos + 1, stack, o2c)
- }
-
- val open2close = braceMatcher(0, Nil, Map())
- val close2open = open2close.map(_.swap)
-
- @tailrec def ex(pos:Int, tape:Tape[T]): Unit =
- if(pos < prog.length) ex((prog(pos): @switch) match {
- case '[' if tape.isZero => open2close(pos)
- case ']' if ! tape.isZero => close2open(pos)
- case _ => pos + 1
- }, tape.execute(prog(pos)))
-
- println("---running---")
- ex(0, Tape.empty(func))
- println("\n---done---")
- }
- }
-
- val bf = new Brainfuck(ByteFunc)
- bf.execute(""">+++++++++[<++++++++>-]<.>+++++++[<++
- ++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]
- <.#>+++++++++++[<+++++>-]<.>++++++++[<++
- +>-]<.+++.------.--------.[-]>++++++++[<++++>
- -]<+.[-]++++++++++.""")
- }.eval
-}
diff --git a/test/pending/run/reify_callccinterpreter.check b/test/pending/run/reify_callccinterpreter.check
deleted file mode 100644
index ef8fc121df..0000000000
--- a/test/pending/run/reify_callccinterpreter.check
+++ /dev/null
@@ -1,3 +0,0 @@
-42
-wrong
-5
diff --git a/test/pending/run/reify_callccinterpreter.scala b/test/pending/run/reify_callccinterpreter.scala
deleted file mode 100644
index 82c70da28f..0000000000
--- a/test/pending/run/reify_callccinterpreter.scala
+++ /dev/null
@@ -1,88 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.Eval
-
-object Test extends App {
- reify {
- type Answer = Value;
-
- /**
- * A continuation monad.
- */
- case class M[A](in: (A => Answer) => Answer) {
- def bind[B](k: A => M[B]) = M[B](c => in (a => k(a) in c))
- def map[B](f: A => B): M[B] = bind(x => unitM(f(x)))
- def flatMap[B](f: A => M[B]): M[B] = bind(f)
- }
-
- def unitM[A](a: A) = M[A](c => c(a))
-
- def id[A] = (x: A) => x
- def showM(m: M[Value]): String = (m in id).toString()
-
- def callCC[A](h: (A => M[A]) => M[A]) =
- M[A](c => h(a => M[A](d => c(a))) in c)
-
- type Name = String
-
- trait Term
- case class Var(x: Name) extends Term
- case class Con(n: Int) extends Term
- case class Add(l: Term, r: Term) extends Term
- case class Lam(x: Name, body: Term) extends Term
- case class App(fun: Term, arg: Term) extends Term
- case class Ccc(x: Name, t: Term) extends Term
-
- trait Value
- case object Wrong extends Value {
- override def toString() = "wrong"
- }
- case class Num(n: Int) extends Value {
- override def toString() = n.toString()
- }
- case class Fun(f: Value => M[Value]) extends Value {
- override def toString() = "<function>"
- }
-
- type Environment = List[Tuple2[Name, Value]];
-
- def lookup(x: Name, e: Environment): M[Value] = e match {
- case List() => unitM(Wrong)
- case (y, b) :: e1 => if (x == y) unitM(b) else lookup(x, e1)
- }
-
- def add(a: Value, b: Value): M[Value] = (a, b) match {
- case (Num(m), Num(n)) => unitM(Num(m + n))
- case _ => unitM(Wrong)
- }
-
- def apply(a: Value, b: Value): M[Value] = a match {
- case Fun(k) => k(b)
- case _ => unitM(Wrong)
- }
-
- def interp(t: Term, e: Environment): M[Value] = t match {
- case Var(x) => lookup(x, e)
- case Con(n) => unitM(Num(n))
- case Add(l, r) => for (a <- interp(l, e);
- b <- interp(r, e);
- c <- add(a, b))
- yield c
- case Lam(x, t) => unitM(Fun(a => interp(t, (x, a) :: e)))
- case App(f, t) => for (a <- interp(f, e);
- b <- interp(t, e);
- c <- apply(a, b))
- yield c
- case Ccc(x, t) => callCC(k => interp(t, (x, Fun(k)) :: e))
- }
-
- def test(t: Term): String = showM(interp(t, List()))
-
- val term0 = App(Lam("x", Add(Var("x"), Var("x"))), Add(Con(10), Con(11)))
- val term1 = App(Con(1), Con(2))
- val term2 = Add(Con(1), Ccc("k", Add(Con(2), App(Var("k"), Con(4)))))
-
- println(test(term0))
- println(test(term1))
- println(test(term2))
- }.eval
-}
diff --git a/test/pending/run/reify_closure2b.check b/test/pending/run/reify_closure2b.check
deleted file mode 100644
index c1f3abd7e6..0000000000
--- a/test/pending/run/reify_closure2b.check
+++ /dev/null
@@ -1,2 +0,0 @@
-11
-12
diff --git a/test/pending/run/reify_closure2b.scala b/test/pending/run/reify_closure2b.scala
deleted file mode 100644
index 0f126c8c91..0000000000
--- a/test/pending/run/reify_closure2b.scala
+++ /dev/null
@@ -1,21 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.reflect.runtime.{universe => ru}
-import scala.reflect.runtime.{currentMirror => cm}
-import scala.tools.reflect.ToolBox
-
-object Test extends App {
- def foo(y: Int): Int => Int = {
- class Foo(y: Int) {
- val fun = reify{(x: Int) => {
- x + y
- }}
- }
-
- val toolbox = cm.mkToolBox()
- val dyn = toolbox.eval(new Foo(y).fun.tree)
- dyn.asInstanceOf[Int => Int]
- }
-
- println(foo(1)(10))
- println(foo(2)(10))
-} \ No newline at end of file
diff --git a/test/pending/run/reify_closure3b.check b/test/pending/run/reify_closure3b.check
deleted file mode 100644
index c1f3abd7e6..0000000000
--- a/test/pending/run/reify_closure3b.check
+++ /dev/null
@@ -1,2 +0,0 @@
-11
-12
diff --git a/test/pending/run/reify_closure3b.scala b/test/pending/run/reify_closure3b.scala
deleted file mode 100644
index 54ac52ba0b..0000000000
--- a/test/pending/run/reify_closure3b.scala
+++ /dev/null
@@ -1,23 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.reflect.runtime.{universe => ru}
-import scala.reflect.runtime.{currentMirror => cm}
-import scala.tools.reflect.ToolBox
-
-object Test extends App {
- def foo(y: Int): Int => Int = {
- class Foo(y: Int) {
- def y1 = y
-
- val fun = reify{(x: Int) => {
- x + y1
- }}
- }
-
- val toolbox = cm.mkToolBox()
- val dyn = toolbox.eval(new Foo(y).fun.tree)
- dyn.asInstanceOf[Int => Int]
- }
-
- println(foo(1)(10))
- println(foo(2)(10))
-} \ No newline at end of file
diff --git a/test/pending/run/reify_closure4b.check b/test/pending/run/reify_closure4b.check
deleted file mode 100644
index c1f3abd7e6..0000000000
--- a/test/pending/run/reify_closure4b.check
+++ /dev/null
@@ -1,2 +0,0 @@
-11
-12
diff --git a/test/pending/run/reify_closure4b.scala b/test/pending/run/reify_closure4b.scala
deleted file mode 100644
index 34f707e092..0000000000
--- a/test/pending/run/reify_closure4b.scala
+++ /dev/null
@@ -1,23 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.reflect.runtime.{universe => ru}
-import scala.reflect.runtime.{currentMirror => cm}
-import scala.tools.reflect.ToolBox
-
-object Test extends App {
- def foo(y: Int): Int => Int = {
- class Foo(y: Int) {
- val y1 = y
-
- val fun = reify{(x: Int) => {
- x + y1
- }}
- }
-
- val toolbox = cm.mkToolBox()
- val dyn = toolbox.eval(new Foo(y).fun.tree)
- dyn.asInstanceOf[Int => Int]
- }
-
- println(foo(1)(10))
- println(foo(2)(10))
-} \ No newline at end of file
diff --git a/test/pending/run/reify_closure5b.check b/test/pending/run/reify_closure5b.check
deleted file mode 100644
index df9e19c591..0000000000
--- a/test/pending/run/reify_closure5b.check
+++ /dev/null
@@ -1,2 +0,0 @@
-13
-14
diff --git a/test/pending/run/reify_closure5b.scala b/test/pending/run/reify_closure5b.scala
deleted file mode 100644
index 0e506bf7b5..0000000000
--- a/test/pending/run/reify_closure5b.scala
+++ /dev/null
@@ -1,21 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.reflect.runtime.{universe => ru}
-import scala.reflect.runtime.{currentMirror => cm}
-import scala.tools.reflect.ToolBox
-
-object Test extends App {
- def foo[T](ys: List[T]): Int => Int = {
- class Foo[T](ys: List[T]) {
- val fun = reify{(x: Int) => {
- x + ys.length
- }}
- }
-
- val toolbox = cm.mkToolBox()
- val dyn = toolbox.eval(new Foo(ys).fun.tree)
- dyn.asInstanceOf[Int => Int]
- }
-
- println(foo(List(1, 2, 3))(10))
- println(foo(List(1, 2, 3, 4))(10))
-} \ No newline at end of file
diff --git a/test/pending/run/reify_closure9a.check b/test/pending/run/reify_closure9a.check
deleted file mode 100644
index 9a037142aa..0000000000
--- a/test/pending/run/reify_closure9a.check
+++ /dev/null
@@ -1 +0,0 @@
-10 \ No newline at end of file
diff --git a/test/pending/run/reify_closure9a.scala b/test/pending/run/reify_closure9a.scala
deleted file mode 100644
index f39ff1e2f3..0000000000
--- a/test/pending/run/reify_closure9a.scala
+++ /dev/null
@@ -1,18 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.reflect.runtime.{universe => ru}
-import scala.reflect.runtime.{currentMirror => cm}
-import scala.tools.reflect.ToolBox
-
-object Test extends App {
- def foo(y: Int) = {
- class Foo(val y: Int) {
- def fun = reify{y}
- }
-
- val toolbox = cm.mkToolBox()
- val dyn = toolbox.eval(new Foo(y).fun.tree)
- dyn.asInstanceOf[Int]
- }
-
- println(foo(10))
-} \ No newline at end of file
diff --git a/test/pending/run/reify_closure9b.check b/test/pending/run/reify_closure9b.check
deleted file mode 100644
index 9a037142aa..0000000000
--- a/test/pending/run/reify_closure9b.check
+++ /dev/null
@@ -1 +0,0 @@
-10 \ No newline at end of file
diff --git a/test/pending/run/reify_closure9b.scala b/test/pending/run/reify_closure9b.scala
deleted file mode 100644
index a6920b4e02..0000000000
--- a/test/pending/run/reify_closure9b.scala
+++ /dev/null
@@ -1,18 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.reflect.runtime.{universe => ru}
-import scala.reflect.runtime.{currentMirror => cm}
-import scala.tools.reflect.ToolBox
-
-object Test extends App {
- def foo(y: Int) = {
- class Foo(y: Int) {
- def fun = reify{y}
- }
-
- val toolbox = cm.mkToolBox()
- val dyn = toolbox.eval(new Foo(y).fun.tree)
- dyn.asInstanceOf[Int]
- }
-
- println(foo(10))
-} \ No newline at end of file
diff --git a/test/pending/run/reify_closures11.check b/test/pending/run/reify_closures11.check
deleted file mode 100644
index d8263ee986..0000000000
--- a/test/pending/run/reify_closures11.check
+++ /dev/null
@@ -1 +0,0 @@
-2 \ No newline at end of file
diff --git a/test/pending/run/reify_closures11.scala b/test/pending/run/reify_closures11.scala
deleted file mode 100644
index 9156208b40..0000000000
--- a/test/pending/run/reify_closures11.scala
+++ /dev/null
@@ -1,16 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.reflect.runtime.{universe => ru}
-import scala.reflect.runtime.{currentMirror => cm}
-import scala.tools.reflect.ToolBox
-
-object Test extends App {
- def fun() = {
- def z() = 2
- reify{z}
- }
-
- val toolbox = cm.mkToolBox()
- val dyn = toolbox.eval(fun().tree)
- val foo = dyn.asInstanceOf[Int]
- println(foo)
-} \ No newline at end of file
diff --git a/test/pending/run/reify_gadts.check b/test/pending/run/reify_gadts.check
deleted file mode 100644
index d81cc0710e..0000000000
--- a/test/pending/run/reify_gadts.check
+++ /dev/null
@@ -1 +0,0 @@
-42
diff --git a/test/pending/run/reify_gadts.scala b/test/pending/run/reify_gadts.scala
deleted file mode 100644
index 582c0802f7..0000000000
--- a/test/pending/run/reify_gadts.scala
+++ /dev/null
@@ -1,39 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.Eval
-
-object Test extends App {
- reify {
- /* The syntax tree of a toy language */
- abstract class Term[T]
-
- /* An integer literal */
- case class Lit(x: Int) extends Term[Int]
-
- /* Successor of a number */
- case class Succ(t: Term[Int]) extends Term[Int]
-
- /* Is 't' equal to zero? */
- case class IsZero(t: Term[Int]) extends Term[Boolean]
-
- /* An 'if' expression. */
- case class If[T](c: Term[Boolean],
- t1: Term[T],
- t2: Term[T]) extends Term[T]
-
- /** A type-safe eval function. The right-hand sides can
- * make use of the fact that 'T' is a more precise type,
- * constraint by the pattern type.
- */
- def eval[T](t: Term[T]): T = t match {
- case Lit(n) => n
-
- // the right hand side makes use of the fact
- // that T = Int and so it can use '+'
- case Succ(u) => eval(u) + 1
- case IsZero(u) => eval(u) == 0
- case If(c, u1, u2) => eval(if (eval(c)) u1 else u2)
- }
- println(
- eval(If(IsZero(Lit(1)), Lit(41), Succ(Lit(41)))))
- }.eval
-}
diff --git a/test/pending/run/reify_newimpl_07.scala b/test/pending/run/reify_newimpl_07.scala
deleted file mode 100644
index b6886b8bb7..0000000000
--- a/test/pending/run/reify_newimpl_07.scala
+++ /dev/null
@@ -1,14 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.Eval
-
-object Test extends App {
- {
- class C(val y: Int) {
- val code = reify {
- reify{y}.splice
- }
- }
-
- println(new C(2).code.eval)
- }
-} \ No newline at end of file
diff --git a/test/pending/run/reify_newimpl_08.scala b/test/pending/run/reify_newimpl_08.scala
deleted file mode 100644
index 6caa33f30d..0000000000
--- a/test/pending/run/reify_newimpl_08.scala
+++ /dev/null
@@ -1,16 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.Eval
-
-object Test extends App {
- val code = reify {
- class C(val y: Int) {
- val code = reify {
- reify{y}.splice
- }
- }
-
- new C(2).code.splice
- }
-
- println(code.eval)
-} \ No newline at end of file
diff --git a/test/pending/run/reify_newimpl_09.scala b/test/pending/run/reify_newimpl_09.scala
deleted file mode 100644
index 27fbd37b71..0000000000
--- a/test/pending/run/reify_newimpl_09.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.ToolBox
-import scala.tools.reflect.Eval
-
-object Test extends App {
- {
- type T = Int
- val code = reify {
- List[T](2)
- }
- println(code.eval)
- }
-} \ No newline at end of file
diff --git a/test/pending/run/reify_newimpl_09a.scala b/test/pending/run/reify_newimpl_09a.scala
deleted file mode 100644
index 27fbd37b71..0000000000
--- a/test/pending/run/reify_newimpl_09a.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.ToolBox
-import scala.tools.reflect.Eval
-
-object Test extends App {
- {
- type T = Int
- val code = reify {
- List[T](2)
- }
- println(code.eval)
- }
-} \ No newline at end of file
diff --git a/test/pending/run/reify_newimpl_09b.scala b/test/pending/run/reify_newimpl_09b.scala
deleted file mode 100644
index 9e86dd5d8d..0000000000
--- a/test/pending/run/reify_newimpl_09b.scala
+++ /dev/null
@@ -1,14 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.ToolBox
-import scala.tools.reflect.Eval
-
-object Test extends App {
- {
- type U = Int
- type T = U
- val code = reify {
- List[T](2)
- }
- println(code.eval)
- }
-} \ No newline at end of file
diff --git a/test/pending/run/reify_newimpl_09c.scala b/test/pending/run/reify_newimpl_09c.scala
deleted file mode 100644
index 6bde36328e..0000000000
--- a/test/pending/run/reify_newimpl_09c.scala
+++ /dev/null
@@ -1,20 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.ToolBox
-import scala.tools.reflect.Eval
-
-object Test extends App {
- {
- def foo[W] = {
- type U = W
- type T = U
- reify {
- List[T](2)
- }
- }
- val code = foo[Int]
- println(code.tree.freeTypes)
- val W = code.tree.freeTypes(2)
- cm.mkToolBox().eval(code.tree, Map(W -> definitions.IntTpe))
- println(code.eval)
- }
-} \ No newline at end of file
diff --git a/test/pending/run/reify_newimpl_10.scala b/test/pending/run/reify_newimpl_10.scala
deleted file mode 100644
index 791e52943a..0000000000
--- a/test/pending/run/reify_newimpl_10.scala
+++ /dev/null
@@ -1,14 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.ToolBox
-import scala.tools.reflect.Eval
-
-object Test extends App {
- {
- type T = Int
- implicit val tt = implicitly[TypeTag[String]].asInstanceOf[TypeTag[T]] // this "mistake" is made for a reason!
- val code = reify {
- List[T](2)
- }
- println(code.eval)
- }
-} \ No newline at end of file
diff --git a/test/pending/run/reify_newimpl_16.scala b/test/pending/run/reify_newimpl_16.scala
deleted file mode 100644
index a0cadf4d48..0000000000
--- a/test/pending/run/reify_newimpl_16.scala
+++ /dev/null
@@ -1,17 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.ToolBox
-import scala.tools.reflect.Eval
-
-object Test extends App {
- {
- class C {
- type T = Int
- val code = reify {
- List[T](2)
- }
- println(code.eval)
- }
-
- new C
- }
-} \ No newline at end of file
diff --git a/test/pending/run/reify_newimpl_17.scala b/test/pending/run/reify_newimpl_17.scala
deleted file mode 100644
index 8fbcd52502..0000000000
--- a/test/pending/run/reify_newimpl_17.scala
+++ /dev/null
@@ -1,20 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.ToolBox
-import scala.tools.reflect.Eval
-
-object Test extends App {
- class C[U] {
- type T = U
- val code = reify {
- List[T](2.asInstanceOf[T])
- }
- println(code.eval)
- }
-
- try {
- new C[Int]
- } catch {
- case ex: Throwable =>
- println(ex)
- }
-} \ No newline at end of file
diff --git a/test/pending/run/reify_newimpl_28.scala b/test/pending/run/reify_newimpl_28.scala
deleted file mode 100644
index 524a110704..0000000000
--- a/test/pending/run/reify_newimpl_28.scala
+++ /dev/null
@@ -1,17 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.ToolBox
-import scala.tools.reflect.Eval
-
-object Test extends App {
- {
- object C {
- type T = Int
- val code = reify {
- List[T](2)
- }
- println(code.eval)
- }
-
- C
- }
-} \ No newline at end of file
diff --git a/test/pending/run/reify_newimpl_32.scala b/test/pending/run/reify_newimpl_32.scala
deleted file mode 100644
index 095e59d919..0000000000
--- a/test/pending/run/reify_newimpl_32.scala
+++ /dev/null
@@ -1,17 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.ToolBox
-import scala.tools.reflect.Eval
-
-object Test extends App {
- {
- object C {
- type T = Int
- val code = reify {
- List[C.T](2)
- }
- println(code.eval)
- }
-
- C
- }
-} \ No newline at end of file
diff --git a/test/pending/run/reify_newimpl_34.scala b/test/pending/run/reify_newimpl_34.scala
deleted file mode 100644
index a0a575ed7d..0000000000
--- a/test/pending/run/reify_newimpl_34.scala
+++ /dev/null
@@ -1,18 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.ToolBox
-import scala.tools.reflect.Eval
-
-object Test extends App {
- {
- object C {
- type T = Int
- lazy val c = C
- val code = reify {
- List[c.T](2)
- }
- println(code.eval)
- }
-
- C
- }
-} \ No newline at end of file
diff --git a/test/pending/run/reify_newimpl_46.scala b/test/pending/run/reify_newimpl_46.scala
deleted file mode 100644
index d063be0486..0000000000
--- a/test/pending/run/reify_newimpl_46.scala
+++ /dev/null
@@ -1,15 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.reflect.runtime.{universe => ru}
-import scala.reflect.runtime.{currentMirror => cm}
-import scala.tools.reflect.ToolBox
-
-object Test extends App {
- class C[T[_] >: Null] {
- val code = reify{val x: T[String] = null; println("ima worx"); x}.tree
- println(code.freeTypes)
- val T = code.freeTypes(0)
- cm.mkToolBox().eval(code, Map(T -> definitions.ListClass.asType))
- }
-
- new C[List]
-} \ No newline at end of file
diff --git a/test/pending/run/reify_newimpl_53.scala b/test/pending/run/reify_newimpl_53.scala
deleted file mode 100644
index 54fa4bec1d..0000000000
--- a/test/pending/run/reify_newimpl_53.scala
+++ /dev/null
@@ -1,18 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.reflect.runtime.{universe => ru}
-import scala.reflect.runtime.{currentMirror => cm}
-import scala.tools.reflect.ToolBox
-
-object Test extends App {
- class C[T >: Null] {
- val code = reify{
- val tt = implicitly[TypeTag[T]]
- println("mah typetag is: %s".format(tt))
- }.tree
- println(code.freeTypes)
- val T = code.freeTypes(0)
- cm.mkToolBox().eval(code, Map(T -> definitions.StringClass.asType))
- }
-
- new C[String]
-} \ No newline at end of file
diff --git a/test/pending/run/reify_simpleinterpreter.check b/test/pending/run/reify_simpleinterpreter.check
deleted file mode 100644
index 4344dc9009..0000000000
--- a/test/pending/run/reify_simpleinterpreter.check
+++ /dev/null
@@ -1,2 +0,0 @@
-42
-wrong
diff --git a/test/pending/run/reify_simpleinterpreter.scala b/test/pending/run/reify_simpleinterpreter.scala
deleted file mode 100644
index 1f6d6c8da7..0000000000
--- a/test/pending/run/reify_simpleinterpreter.scala
+++ /dev/null
@@ -1,75 +0,0 @@
-import scala.reflect.runtime.universe._
-
-object Test extends App {
- reify {
- case class M[A](value: A) {
- def bind[B](k: A => M[B]): M[B] = k(value)
- def map[B](f: A => B): M[B] = bind(x => unitM(f(x)))
- def flatMap[B](f: A => M[B]): M[B] = bind(f)
- }
-
- def unitM[A](a: A): M[A] = M(a)
-
- def showM(m: M[Value]): String = m.value.toString();
-
- type Name = String
-
- trait Term;
- case class Var(x: Name) extends Term
- case class Con(n: Int) extends Term
- case class Add(l: Term, r: Term) extends Term
- case class Lam(x: Name, body: Term) extends Term
- case class App(fun: Term, arg: Term) extends Term
-
- trait Value
- case object Wrong extends Value {
- override def toString() = "wrong"
- }
- case class Num(n: Int) extends Value {
- override def toString() = n.toString()
- }
- case class Fun(f: Value => M[Value]) extends Value {
- override def toString() = "<function>"
- }
-
- type Environment = List[Tuple2[Name, Value]]
-
- def lookup(x: Name, e: Environment): M[Value] = e match {
- case List() => unitM(Wrong)
- case (y, b) :: e1 => if (x == y) unitM(b) else lookup(x, e1)
- }
-
- def add(a: Value, b: Value): M[Value] = (a, b) match {
- case (Num(m), Num(n)) => unitM(Num(m + n))
- case _ => unitM(Wrong)
- }
-
- def apply(a: Value, b: Value): M[Value] = a match {
- case Fun(k) => k(b)
- case _ => unitM(Wrong)
- }
-
- def interp(t: Term, e: Environment): M[Value] = t match {
- case Var(x) => lookup(x, e)
- case Con(n) => unitM(Num(n))
- case Add(l, r) => for (a <- interp(l, e);
- b <- interp(r, e);
- c <- add(a, b))
- yield c
- case Lam(x, t) => unitM(Fun(a => interp(t, (x, a) :: e)))
- case App(f, t) => for (a <- interp(f, e);
- b <- interp(t, e);
- c <- apply(a, b))
- yield c
- }
-
- def test(t: Term): String =
- showM(interp(t, List()))
-
- val term0 = App(Lam("x", Add(Var("x"), Var("x"))), Add(Con(10), Con(11)))
- val term1 = App(Con(1), Con(2))
-
- println(test(term0))
- println(test(term1))
- }.eval
-}
diff --git a/test/pending/run/signals.scala b/test/pending/run/signals.scala
deleted file mode 100644
index 608b3c7fd5..0000000000
--- a/test/pending/run/signals.scala
+++ /dev/null
@@ -1,22 +0,0 @@
-// not exactly "pending", here as an example usage.
-//
-val manager = scala.tools.util.SignalManager
-
-manager.requireInterval(3, manager.INT) {
- case true => Console.println("\nPress ctrl-C again to exit.")
- case false => System.exit(1)
-}
-
-manager("HUP") = println("HUP 1!")
-manager("HUP").raise()
-
-manager("HUP") += println("HUP 2!")
-manager("HUP").raise()
-
-manager("HUP") += println("HUP 3!")
-manager("HUP").raise()
-
-manager("HUP") = println("Back to HUP 1!")
-manager("HUP").raise()
-
-manager.dump()
diff --git a/test/pending/run/sigtp.check b/test/pending/run/sigtp.check
deleted file mode 100644
index a4d0f55ece..0000000000
--- a/test/pending/run/sigtp.check
+++ /dev/null
@@ -1,11 +0,0 @@
-BugBase
- (m) public abstract A BugBase.key()
- (m) public abstract E BugBase.next()
- (m) public abstract void BugBase.next_$eq(E)
-Bug
- (m) public Bug<A, B> Bug.foo()
- (m) public A Bug.key()
- (m) public Bug<A, B> Bug.next() (bridge)
- (m) public void Bug.next_$eq(Bug<A, B>) (bridge)
- (f) private final A Bug.key
- (f) private java.lang.Object Bug.next
diff --git a/test/pending/run/sigtp.scala b/test/pending/run/sigtp.scala
deleted file mode 100644
index f8e050dbdc..0000000000
--- a/test/pending/run/sigtp.scala
+++ /dev/null
@@ -1,17 +0,0 @@
-import scala.tools.partest._
-
-trait BugBase [A, E] {
- val key: A
- var next: E = _
-}
-
-final class Bug[A, B](val key: A) extends BugBase[A, Bug[A, B]] {
- def foo = next
-}
-
-object Test extends SigTest {
- def main(args: Array[String]): Unit = {
- show[BugBase[_, _]]()
- show[Bug[_, _]]()
- }
-}
diff --git a/test/pending/run/string-reverse.scala b/test/pending/run/string-reverse.scala
deleted file mode 100644
index 976a970dec..0000000000
--- a/test/pending/run/string-reverse.scala
+++ /dev/null
@@ -1,22 +0,0 @@
-/** In case we ever feel like taking on unicode string reversal.
- * See ticket #2565.
- */
-object Test {
- val xs = "Les Mise\u0301rables" // this is the tricky one to reverse
- val ys = "Les Misérables"
- val xs2 = new StringBuilder(xs)
- val ys2 = new StringBuilder(ys)
-
- def main(args: Array[String]): Unit = {
- val out = new java.io.PrintStream(System.out, true, "UTF-8")
-
- out.println("Strings")
- List(xs, xs.reverse, ys, ys.reverse) foreach (out println _)
-
- out.println("StringBuilder")
- out.println(xs2.toString)
- out.println(xs2.reverseContents().toString)
- out.println(ys2.toString)
- out.println(ys2.reverseContents().toString)
- }
-} \ No newline at end of file
diff --git a/test/pending/run/structural-types-vs-anon-classes.scala b/test/pending/run/structural-types-vs-anon-classes.scala
deleted file mode 100644
index 23410e3955..0000000000
--- a/test/pending/run/structural-types-vs-anon-classes.scala
+++ /dev/null
@@ -1,17 +0,0 @@
-object Test {
- class Arm
- class Leg
- class Tail
- class Monkey(arms: List[Arm], legs :List[Leg], tail: Tail)
-
- def makeAwesomeMonkey(arms: List[Arm], legs: List[Leg], tail: Tail) = {
- object m extends Monkey(arms, legs, tail) {
- def beAwesome () = "I can fly! I can fly!"
- }
- m
- }
-
- def main(args: Array[String]): Unit = {
- println(makeAwesomeMonkey(Nil, Nil, new Tail) beAwesome)
- }
-}
diff --git a/test/pending/run/t0508x.scala b/test/pending/run/t0508x.scala
deleted file mode 100644
index 12d3d09711..0000000000
--- a/test/pending/run/t0508x.scala
+++ /dev/null
@@ -1,21 +0,0 @@
- final object Test extends java.lang.Object with Application {
-
- class Foo(val s: String, val n: Int) extends java.lang.Object {
- };
-
- def foo[A >: Nothing <: Any, B >: Nothing <: Any, C >: Nothing <: Any]
- (unapply1: (A) => Option[(B, C)], v: A): Unit =
- unapply1.apply(v) match {
- case Some((fst @ _, snd @ _)) =>
- scala.Predef.println(scala.Tuple2.apply[java.lang.String, java.lang.String]("first: ".+(fst), " second: ".+(snd)))
- case _ => scala.Predef.println(":(")
- }
- Test.this.foo[Test.Foo, String, Int]({
- ((eta$0$1: Test.Foo) => Test.this.Foo.unapply(eta$0$1))
- }, Test.this.Foo.apply("this might be fun", 10));
- final object Foo extends java.lang.Object with ((String, Int) => Test.Foo) {
- def unapply(x$0: Test.Foo): Some[(String, Int)] = scala.Some.apply[(String, Int)](scala.Tuple2.apply[String, Int](x$0.s, x$0.n));
- def apply(s: String, n: Int): Test.Foo = new Test.this.Foo(s, n)
- }
- }
-
diff --git a/test/pending/run/t1980.scala b/test/pending/run/t1980.scala
deleted file mode 100644
index 71c178d634..0000000000
--- a/test/pending/run/t1980.scala
+++ /dev/null
@@ -1,27 +0,0 @@
-// by-name argument incorrectly evaluated on :-ending operator
-// Reported by: extempore Owned by: odersky
-// Priority: normal Component: Compiler
-// Keywords: Cc: paulp@…
-// Fixed in version:
-// Description
-
-scala> def foo() = { println("foo") ; 5 }
-foo: ()Int
-
-scala> class C { def m1(f: => Int) = () ; def m2_:(f: => Int) = () }
-defined class C
-
-scala> val c = new C
-c: C = C@96d484
-
-scala> c m1 foo()
-
-scala> foo() m2_: c
-foo
-
-// But it is not evaluated if invoked directly:
-
-scala> c.m2_:(foo())
-
-// scala>
-
diff --git a/test/pending/run/t2034.scala b/test/pending/run/t2034.scala
deleted file mode 100644
index a599dc2224..0000000000
--- a/test/pending/run/t2034.scala
+++ /dev/null
@@ -1,15 +0,0 @@
-// no idea, reassigned to Iulian
-object Test {
-
- def main(args: Array[String]) {
- val fooz = new foo.foo2
- println(fooz)
- }
-
- object foo {
- class foo2 {
- override def toString = getClass.toString//.getSimpleName
- }
- }
-
-}
diff --git a/test/pending/run/t2364.check b/test/pending/run/t2364.check
deleted file mode 100644
index 219305e43a..0000000000
--- a/test/pending/run/t2364.check
+++ /dev/null
@@ -1 +0,0 @@
-<test></test>
diff --git a/test/pending/run/t2364.scala b/test/pending/run/t2364.scala
deleted file mode 100644
index d5805a13b8..0000000000
--- a/test/pending/run/t2364.scala
+++ /dev/null
@@ -1,60 +0,0 @@
-import java.io.ByteArrayInputStream
-import java.io.ByteArrayOutputStream
-import com.sun.xml.internal.fastinfoset._
-import com.sun.xml.internal.fastinfoset.sax._
-import scala.xml.parsing.NoBindingFactoryAdapter
-import scala.xml._
-
-// Note - this is in pending because com.sun.xml.etc is not standard,
-// and I don't have time to extract a smaller test.
-
-object Test {
- def main(args: Array[String]) {
- val node = <test/>
- val bytes = new ByteArrayOutputStream
- val serializer = new SAXDocumentSerializer()
-
- serializer.setOutputStream(bytes)
- serializer.startDocument()
- serialize(node, serializer)
- serializer.endDocument()
- println(parse(new ByteArrayInputStream(bytes.toByteArray)))
- }
- def serialize(node: Node, serializer: SAXDocumentSerializer) {
- node match {
- case _ : ProcInstr | _ : Comment | _ : EntityRef =>
- case x : Atom[_] =>
- val chars = x.text.toCharArray
- serializer.characters(chars, 0, chars.length)
- case _ : Elem =>
- serializer.startElement("", node.label.toLowerCase, node.label.toLowerCase, attributes(node.attributes))
- for (m <- node.child) serialize(m, serializer)
- serializer.endElement("", node.label.toLowerCase, node.label.toLowerCase)
- }
- }
- def parse(str: ByteArrayInputStream) = {
- val parser = new SAXDocumentParser
- val fac = new NoBindingFactoryAdapter
-
- parser.setContentHandler(fac)
- try {
- parser.parse(str)
- } catch {
- case x: Exception =>
- x.printStackTrace
- }
- fac.rootElem
- }
- def attributes(d: MetaData) = {
- val attrs = new AttributesHolder
-
- if (d != null) {
- for (attr <- d) {
- val sb = new StringBuilder()
- Utility.sequenceToXML(attr.value, TopScope, sb, true)
- attrs.addAttribute(new QualifiedName("", "", attr.key.toLowerCase), sb.toString)
- }
- }
- attrs
- }
-}
diff --git a/test/pending/run/t2897.scala b/test/pending/run/t2897.scala
deleted file mode 100644
index 40fd3c2b08..0000000000
--- a/test/pending/run/t2897.scala
+++ /dev/null
@@ -1,22 +0,0 @@
-class A {
- def f1(t: String) = {
- trait T {
- def xs = Nil map (_ => t)
- }
- }
- def f2(t: String) = {
- def xs = Nil map (_ => t)
- }
- def f3(t: String) = {
- var t1 = 5
- trait T {
- def xs = { t1 = 10 ; t }
- }
- }
- def f4() = {
- var u = 5
- trait T {
- def xs = Nil map (_ => u = 10)
- }
- }
-}
diff --git a/test/pending/run/t3609.scala b/test/pending/run/t3609.scala
deleted file mode 100644
index eb25afd667..0000000000
--- a/test/pending/run/t3609.scala
+++ /dev/null
@@ -1,28 +0,0 @@
-object Test extends Application {
- class A
- class B extends A
- def foo(x: A, y: B) = print(1)
- val foo = new {
- // def apply(x: B, y: A) = print(3)
- def apply = (x: B, z: B) => print(4)
- }
-
- foo(new B, new B)
-}
-
-// This code prints 1. If we remove comment, then it will print 4.
-// Moreover following code prints 3 (which is most strange thing):
-
-object Test2 extends Application {
- class A
- class B extends A
- def foo(x: A, y: B) = print(1)
- val foo = new {
- def apply(x: B, y: A) = print(3)
- def apply = new {
- def apply = (x: B, z: B) => print(4)
- }
- }
-
- foo(new B, new B)
-} \ No newline at end of file
diff --git a/test/pending/run/t3669.scala b/test/pending/run/t3669.scala
deleted file mode 100644
index c60ba98538..0000000000
--- a/test/pending/run/t3669.scala
+++ /dev/null
@@ -1,22 +0,0 @@
-trait MyTrait[T <: { var id: U }, U] {
- def test(t: T): T = {
- val v: U = t.id
- t.id = v
- t
- }
-}
-
-class C (var id: String){
- // uncommenting this fixes it
- // def id_=(x: AnyRef) { id = x.asInstanceOf[String] }
-}
-
-class Test extends MyTrait[C, String]
-
-object Test {
- def main(args: Array[String]): Unit = {
- val t = new Test()
- val c1 = new C("a")
- val c2 = t.test(c1)
- }
-}
diff --git a/test/pending/run/t3832.scala b/test/pending/run/t3832.scala
deleted file mode 100644
index f081d5b3af..0000000000
--- a/test/pending/run/t3832.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-class Test {
- def this(un: Int) = {
- this()
- def test(xs: List[Int]) = xs map (x => x)
- ()
- }
-} \ No newline at end of file
diff --git a/test/pending/run/t3857.check b/test/pending/run/t3857.check
deleted file mode 100644
index 520b350ff5..0000000000
--- a/test/pending/run/t3857.check
+++ /dev/null
@@ -1,11 +0,0 @@
-ScalaGeneric
- (m) public java.util.Set<java.lang.String> ScalaGeneric.s()
- (m) public void ScalaGeneric.s_$eq(java.util.Set<java.lang.String>)
- (f) private java.util.Set<java.lang.String> ScalaGeneric.s
-ScalaGeneric2Trait
- (m) public abstract java.util.Set<java.lang.String> ScalaGeneric2Trait.s()
- (m) public abstract void ScalaGeneric2Trait.s_$eq(java.util.Set<java.lang.String>)
-ScalaGeneric2
- (m) public java.util.Set<java.lang.String> ScalaGeneric2.s() (bridge)
- (m) public void ScalaGeneric2.s_$eq(java.util.Set<java.lang.String>) (bridge)
- (f) private java.util.Set<java.lang.String> ScalaGeneric2.s
diff --git a/test/pending/run/t3857.scala b/test/pending/run/t3857.scala
deleted file mode 100644
index 62bdc39da9..0000000000
--- a/test/pending/run/t3857.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-import scala.tools.partest._
-
-class ScalaGeneric { var s: java.util.Set[String] = _ }
-trait ScalaGeneric2Trait { var s: java.util.Set[String] = _ }
-class ScalaGeneric2 extends ScalaGeneric2Trait { }
-
-object Test extends SigTest {
- def main(args: Array[String]): Unit = {
- show[ScalaGeneric]()
- show[ScalaGeneric2Trait]()
- show[ScalaGeneric2]()
- }
-}
diff --git a/test/pending/run/t3899.check b/test/pending/run/t3899.check
deleted file mode 100644
index c317608eab..0000000000
--- a/test/pending/run/t3899.check
+++ /dev/null
@@ -1,4 +0,0 @@
-a,b
-a,b
-a,b
-a,b
diff --git a/test/pending/run/t3899/Base_1.java b/test/pending/run/t3899/Base_1.java
deleted file mode 100644
index 114cc0b7a6..0000000000
--- a/test/pending/run/t3899/Base_1.java
+++ /dev/null
@@ -1,5 +0,0 @@
-public class Base_1 {
- public String[] varargs1(String... as) {
- return as;
- }
-}
diff --git a/test/pending/run/t3899/Derived_2.scala b/test/pending/run/t3899/Derived_2.scala
deleted file mode 100644
index bb4e53784d..0000000000
--- a/test/pending/run/t3899/Derived_2.scala
+++ /dev/null
@@ -1,30 +0,0 @@
-trait T extends Base_1 {
- def t1(as: String*): Array[String] = {
- varargs1(as: _*)
- }
- def t2(as: String*): Array[String] = {
- // This is the bug reported in the ticket.
- super.varargs1(as: _*)
- }
-}
-
-class C extends Base_1 {
- def c1(as: String*): Array[String] = {
- varargs1(as: _*)
- }
- def c2(as: String*): Array[String] = {
- super.varargs1(as: _*)
- }
-}
-
-
-object Test extends App {
- val t = new T {}
- println(t.t1("a", "b").mkString(","))
- println(t.t2("a", "b").mkString(","))
-
- val c = new C {}
- println(c.c1("a", "b").mkString(","))
- println(c.c2("a", "b").mkString(","))
-
-}
diff --git a/test/pending/run/t4098.scala b/test/pending/run/t4098.scala
deleted file mode 100644
index b74ccf9bff..0000000000
--- a/test/pending/run/t4098.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-class A(a: Any) {
- def this() = { this(b) ; def b = new {} }
-}
-
-object Test {
- def main(args: Array[String]): Unit = {
- new A ("")
- }
-}
diff --git a/test/pending/run/t4291.check b/test/pending/run/t4291.check
deleted file mode 100644
index 30bacfac28..0000000000
--- a/test/pending/run/t4291.check
+++ /dev/null
@@ -1,87 +0,0 @@
-scala.collection.immutable.List
- (m) public java.lang.Object scala.collection.immutable.List.apply(java.lang.Object) (bridge)
- (m) public A scala.collection.immutable.List.apply(int) (bridge)
-scala.Option
- (m) public abstract A scala.Option.get()
-scala.Function1
- (m) public abstract R scala.Function1.apply(T1)
-scala.collection.Traversable
- (m) public abstract <B,That> That scala.collection.TraversableLike.map(scala.Function1<A, B>,scala.collection.generic.CanBuildFrom<Repr, B, That>)
-scala.collection.Iterable
- (m) public abstract <B,That> That scala.collection.TraversableLike.map(scala.Function1<A, B>,scala.collection.generic.CanBuildFrom<Repr, B, That>)
-scala.collection.Seq
- (m) public abstract <B,That> That scala.collection.TraversableLike.map(scala.Function1<A, B>,scala.collection.generic.CanBuildFrom<Repr, B, That>)
-scala.collection.immutable.Set
- (m) public abstract <B,That> That scala.collection.TraversableLike.map(scala.Function1<A, B>,scala.collection.generic.CanBuildFrom<Repr, B, That>)
- (m) public abstract <B,That> That scala.collection.SetLike.map(scala.Function1<A, B>,scala.collection.generic.CanBuildFrom<This, B, That>)
-scala.collection.immutable.Map
- (m) public abstract <B,That> That scala.collection.TraversableLike.map(scala.Function1<A, B>,scala.collection.generic.CanBuildFrom<Repr, B, That>)
-scala.collection.immutable.Vector
- (m) public <B,That> That scala.collection.immutable.Vector.map(scala.Function1<A, B>,scala.collection.generic.CanBuildFrom<scala.collection.immutable.Vector<A>, B, That>) (bridge)
-scala.collection.immutable.Range
- (m) public <B,That> That scala.collection.immutable.Range.map(scala.Function1<java.lang.Object, B>,scala.collection.generic.CanBuildFrom<scala.collection.immutable.IndexedSeq<java.lang.Object>, B, That>) (bridge)
-scala.collection.Traversable
- (m) public abstract <B,That> That scala.collection.TraversableLike.flatMap(scala.Function1<A, scala.collection.TraversableOnce<B>>,scala.collection.generic.CanBuildFrom<Repr, B, That>)
-scala.collection.Iterable
- (m) public abstract <B,That> That scala.collection.TraversableLike.flatMap(scala.Function1<A, scala.collection.TraversableOnce<B>>,scala.collection.generic.CanBuildFrom<Repr, B, That>)
-scala.collection.Seq
- (m) public abstract <B,That> That scala.collection.TraversableLike.flatMap(scala.Function1<A, scala.collection.TraversableOnce<B>>,scala.collection.generic.CanBuildFrom<Repr, B, That>)
-scala.collection.immutable.Set
- (m) public abstract <B,That> That scala.collection.TraversableLike.flatMap(scala.Function1<A, scala.collection.TraversableOnce<B>>,scala.collection.generic.CanBuildFrom<Repr, B, That>)
-scala.collection.immutable.Map
- (m) public abstract <B,That> That scala.collection.TraversableLike.flatMap(scala.Function1<A, scala.collection.TraversableOnce<B>>,scala.collection.generic.CanBuildFrom<Repr, B, That>)
-scala.collection.immutable.Vector
- (m) public <B,That> That scala.collection.immutable.Vector.flatMap(scala.Function1<A, scala.collection.TraversableOnce<B>>,scala.collection.generic.CanBuildFrom<scala.collection.immutable.Vector<A>, B, That>) (bridge)
-scala.collection.immutable.Range
- (m) public <B,That> That scala.collection.immutable.Range.flatMap(scala.Function1<java.lang.Object, scala.collection.TraversableOnce<B>>,scala.collection.generic.CanBuildFrom<scala.collection.immutable.IndexedSeq<java.lang.Object>, B, That>) (bridge)
-scala.collection.Traversable
- (m) public abstract Repr scala.collection.TraversableLike.filter(scala.Function1<A, java.lang.Object>)
-scala.collection.Iterable
- (m) public abstract Repr scala.collection.TraversableLike.filter(scala.Function1<A, java.lang.Object>)
-scala.collection.Seq
- (m) public abstract Repr scala.collection.TraversableLike.filter(scala.Function1<A, java.lang.Object>)
-scala.collection.immutable.Set
- (m) public abstract Repr scala.collection.TraversableLike.filter(scala.Function1<A, java.lang.Object>)
-scala.collection.immutable.Map
- (m) public abstract Repr scala.collection.TraversableLike.filter(scala.Function1<A, java.lang.Object>)
-scala.collection.immutable.Vector
- (m) public scala.collection.immutable.Vector<A> scala.collection.immutable.Vector.filter(scala.Function1<A, java.lang.Object>) (bridge)
-scala.collection.immutable.Range
- (m) public scala.collection.immutable.IndexedSeq<java.lang.Object> scala.collection.immutable.Range.filter(scala.Function1<java.lang.Object, java.lang.Object>) (bridge)
-scala.collection.Traversable
- (m) public abstract A scala.collection.TraversableLike.head()
- (m) public abstract A scala.collection.generic.GenericTraversableTemplate.head()
-scala.collection.Iterable
- (m) public abstract A scala.collection.TraversableLike.head()
- (m) public abstract A scala.collection.generic.GenericTraversableTemplate.head()
- (m) public abstract A scala.collection.IterableLike.head()
-scala.collection.Seq
- (m) public abstract A scala.collection.TraversableLike.head()
- (m) public abstract A scala.collection.generic.GenericTraversableTemplate.head()
- (m) public abstract A scala.collection.IterableLike.head()
-scala.collection.immutable.Set
- (m) public abstract A scala.collection.TraversableLike.head()
- (m) public abstract A scala.collection.generic.GenericTraversableTemplate.head()
- (m) public abstract A scala.collection.IterableLike.head()
-scala.collection.immutable.Map
- (m) public abstract A scala.collection.TraversableLike.head()
- (m) public abstract A scala.collection.generic.GenericTraversableTemplate.head()
- (m) public abstract A scala.collection.IterableLike.head()
-scala.collection.immutable.Vector
- (m) public A scala.collection.immutable.Vector.head()
-scala.collection.immutable.Range
- (m) public java.lang.Object scala.collection.immutable.Range.head() (bridge)
-scala.collection.Traversable
- (m) public abstract <K> scala.collection.immutable.Map<K, Repr> scala.collection.TraversableLike.groupBy(scala.Function1<A, K>)
-scala.collection.Iterable
- (m) public abstract <K> scala.collection.immutable.Map<K, Repr> scala.collection.TraversableLike.groupBy(scala.Function1<A, K>)
-scala.collection.Seq
- (m) public abstract <K> scala.collection.immutable.Map<K, Repr> scala.collection.TraversableLike.groupBy(scala.Function1<A, K>)
-scala.collection.immutable.Set
- (m) public abstract <K> scala.collection.immutable.Map<K, Repr> scala.collection.TraversableLike.groupBy(scala.Function1<A, K>)
-scala.collection.immutable.Map
- (m) public abstract <K> scala.collection.immutable.Map<K, Repr> scala.collection.TraversableLike.groupBy(scala.Function1<A, K>)
-scala.collection.immutable.Vector
- (m) public <K> scala.collection.immutable.Map<K, scala.collection.immutable.Vector<A>> scala.collection.immutable.Vector.groupBy(scala.Function1<A, K>) (bridge)
-scala.collection.immutable.Range
- (m) public <K> scala.collection.immutable.Map<K, scala.collection.immutable.IndexedSeq<java.lang.Object>> scala.collection.immutable.Range.groupBy(scala.Function1<java.lang.Object, K>) (bridge)
diff --git a/test/pending/run/t4291.scala b/test/pending/run/t4291.scala
deleted file mode 100644
index 0213bb2c20..0000000000
--- a/test/pending/run/t4291.scala
+++ /dev/null
@@ -1,19 +0,0 @@
-import scala.tools.partest._
-
-object Test extends SigTest {
- def main(args: Array[String]): Unit = {
- show[List[_]]("apply")
- show[Option[_]]("get")
- show[Function1[_, _]]("apply")
-
- for (name <- List("map", "flatMap", "filter", "head", "groupBy")) {
- show[Traversable[_]](name)
- show[Iterable[_]](name)
- show[Seq[_]](name)
- show[Set[_]](name)
- show[Map[_,_]](name)
- show[Vector[_]](name)
- show[Range](name)
- }
- }
-}
diff --git a/test/pending/run/t4460.scala b/test/pending/run/t4460.scala
deleted file mode 100644
index 324e2f5bef..0000000000
--- a/test/pending/run/t4460.scala
+++ /dev/null
@@ -1,12 +0,0 @@
-trait A
-
-class B(val x: Int) {
- self: A =>
-
- def this() = this()
-}
-
-object Test extends B(2) with A {
- def main(args: Array[String]) { }
-}
-
diff --git a/test/pending/run/t4511.scala b/test/pending/run/t4511.scala
deleted file mode 100644
index 58d4e0c7b0..0000000000
--- a/test/pending/run/t4511.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-class Interval[@specialized T](val high: T)
-class Node[@specialized T](val interval: Interval[T]) {
- val x1 = Some(interval.high)
-}
-
-object Test {
- def main(args: Array[String]): Unit = {
- new Node(new Interval(5)).x1
- }
-} \ No newline at end of file
diff --git a/test/pending/run/t4511b.scala b/test/pending/run/t4511b.scala
deleted file mode 100644
index 3337fb3203..0000000000
--- a/test/pending/run/t4511b.scala
+++ /dev/null
@@ -1,25 +0,0 @@
-import scala.{specialized => spec}
-
-class Interval[@spec(Int) T](high:T)
-
-class X1[@spec(Int) T](interval:Interval[T]) { val x = interval }
-class Y1[@spec(Int) T](interval:Interval[T]) { val y = Some(interval) }
-
-class X2[T](val interval:Interval[T]) { val x = interval }
-class Y2[T](val interval:Interval[T]) { val y = Some(interval) }
-
-class X3[@spec(Int) T](val interval:Interval[T]) { val x = interval }
-class Y3[@spec(Int) T](val interval:Interval[T]) { val y = Some(interval) }
-
-object Test {
- def tryit(o: => Any) = println(try { "ok: " + o.getClass.getName } catch { case e => "FAIL: " + e + "\n" + e.getStackTrace.mkString("\n ") })
-
- def main(args: Array[String]) {
- tryit(new X1(new Interval(3)))
- tryit(new X2(new Interval(3)))
- tryit(new X3(new Interval(3)))
- tryit(new Y1(new Interval(3)))
- tryit(new Y2(new Interval(3)))
- tryit(new Y3(new Interval(3)))
- }
-}
diff --git a/test/pending/run/t4574.scala b/test/pending/run/t4574.scala
deleted file mode 100644
index 1dde496aca..0000000000
--- a/test/pending/run/t4574.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-object Test {
- val xs: List[(Int, Int)] = List((2, 2), null)
-
- def expectMatchError[T](msg: String)(body: => T) {
- try { body ; assert(false, "Should not succeed.") }
- catch { case _: MatchError => println(msg) }
- }
-
- def main(args: Array[String]): Unit = {
- expectMatchError("I hereby refute null!")( for ((x, y) <- xs) yield x )
- expectMatchError("I denounce null as unListLike!")( (null: Any) match { case List(_*) => true } )
- }
-}
diff --git a/test/pending/run/t4713/JavaAnnots.java b/test/pending/run/t4713/JavaAnnots.java
deleted file mode 100644
index 29541b1ee0..0000000000
--- a/test/pending/run/t4713/JavaAnnots.java
+++ /dev/null
@@ -1,14 +0,0 @@
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import java.util.List;
-
-public abstract class JavaAnnots {
- @Retention(RetentionPolicy.RUNTIME)
- @Target(ElementType.FIELD)
- public @interface Book {
- }
-
- public static final List<String> Book = null;
-} \ No newline at end of file
diff --git a/test/pending/run/t4713/Problem.scala b/test/pending/run/t4713/Problem.scala
deleted file mode 100644
index e87f657d2e..0000000000
--- a/test/pending/run/t4713/Problem.scala
+++ /dev/null
@@ -1,5 +0,0 @@
-object Problem {
- def d() {
- val v: java.util.List[String] = JavaAnnots.Book
- }
-}
diff --git a/test/pending/run/t4971.scala b/test/pending/run/t4971.scala
deleted file mode 100644
index c9b6d6f39f..0000000000
--- a/test/pending/run/t4971.scala
+++ /dev/null
@@ -1,16 +0,0 @@
-trait A[@specialized(Int) K, @specialized(Double) V] {
- def doStuff(k: K, v: V): Unit = sys.error("I am overridden, you cannot call me")
-}
-
-trait B[@specialized(Double) V] extends A[Int, V] {
- override def doStuff(k: Int, v: V): Unit = println("Hi - I'm calling doStuff in B")
-}
-
-object Test {
- def main(args: Array[String]): Unit = delegate(new B[Double]() {}, 1, 0.1)
-
- def delegate[@specialized(Int) K, @specialized(Double) V](a: A[K, V], k: K, v: V) {
- a.doStuff(k, v)
- }
-}
-
diff --git a/test/pending/run/t4996.scala b/test/pending/run/t4996.scala
deleted file mode 100644
index 58a8fe16a3..0000000000
--- a/test/pending/run/t4996.scala
+++ /dev/null
@@ -1,15 +0,0 @@
-object SpecializationAbstractOverride {
-
- trait A[@specialized(Int) T] { def foo(t: T) }
- trait B extends A[Int] { def foo(t: Int) { println("B.foo") } }
- trait M extends B { abstract override def foo(t: Int) { super.foo(t) ; println ("M.foo") } }
- object C extends B with M
-
- object D extends B { override def foo(t: Int) { super.foo(t); println("M.foo") } }
-
- def main(args: Array[String]) {
- D.foo(42) // OK, prints B.foo M.foo
- C.foo(42) // StackOverflowError
- }
-}
-
diff --git a/test/pending/run/t5258b.check b/test/pending/run/t5258b.check
deleted file mode 100644
index 283b4225fb..0000000000
--- a/test/pending/run/t5258b.check
+++ /dev/null
@@ -1 +0,0 @@
-TBI \ No newline at end of file
diff --git a/test/pending/run/t5258b.scala b/test/pending/run/t5258b.scala
deleted file mode 100644
index a280513d59..0000000000
--- a/test/pending/run/t5258b.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.Eval
-
-object Test extends App {
- reify {
- class C
- println(classOf[C])
- }.eval
-} \ No newline at end of file
diff --git a/test/pending/run/t5258c.check b/test/pending/run/t5258c.check
deleted file mode 100644
index 283b4225fb..0000000000
--- a/test/pending/run/t5258c.check
+++ /dev/null
@@ -1 +0,0 @@
-TBI \ No newline at end of file
diff --git a/test/pending/run/t5258c.scala b/test/pending/run/t5258c.scala
deleted file mode 100644
index 4a656690ba..0000000000
--- a/test/pending/run/t5258c.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.Eval
-
-object Test extends App {
- reify {
- object E extends Enumeration { val foo, bar = Value }
- println(E.foo)
- }.eval
-} \ No newline at end of file
diff --git a/test/pending/run/t5284.scala b/test/pending/run/t5284.scala
deleted file mode 100644
index b43afed5b8..0000000000
--- a/test/pending/run/t5284.scala
+++ /dev/null
@@ -1,14 +0,0 @@
-object Test {
- def main(args:Array[String]) {
- val a = Blarg(Array(1,2,3))
- println(a.m((x:Int) => x+1))
- }
-}
-
-object Blarg {
- def apply[T:Manifest](a:Array[T]) = new Blarg(a)
-}
-class Blarg [@specialized T:Manifest](val a:Array[T]) {
- def m[@specialized W>:T,@specialized S](f:W=>S) = f(a(0))
-}
-
diff --git a/test/pending/run/t5334_1.scala b/test/pending/run/t5334_1.scala
deleted file mode 100644
index b75badb145..0000000000
--- a/test/pending/run/t5334_1.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.Eval
-
-object Test extends App {
- reify {
- class C { override def toString = "C" }
- new C
- }.eval
-} \ No newline at end of file
diff --git a/test/pending/run/t5334_2.scala b/test/pending/run/t5334_2.scala
deleted file mode 100644
index e082e3b8e3..0000000000
--- a/test/pending/run/t5334_2.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.Eval
-
-object Test extends App {
- reify {
- class C { override def toString() = "C" }
- List((new C, new C))
- }.eval
-} \ No newline at end of file
diff --git a/test/pending/run/t5427a.check b/test/pending/run/t5427a.check
deleted file mode 100644
index d8263ee986..0000000000
--- a/test/pending/run/t5427a.check
+++ /dev/null
@@ -1 +0,0 @@
-2 \ No newline at end of file
diff --git a/test/pending/run/t5427a.scala b/test/pending/run/t5427a.scala
deleted file mode 100644
index a7d20922db..0000000000
--- a/test/pending/run/t5427a.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-import scala.reflect.runtime.universe._
-
-object Foo { val bar = 2 }
-
-object Test extends App {
- val tpe = getType(Foo)
- val bar = tpe.nonPrivateMember(TermName("bar"))
- val value = getValue(Foo, bar)
- println(value)
-} \ No newline at end of file
diff --git a/test/pending/run/t5427b.check b/test/pending/run/t5427b.check
deleted file mode 100644
index d8263ee986..0000000000
--- a/test/pending/run/t5427b.check
+++ /dev/null
@@ -1 +0,0 @@
-2 \ No newline at end of file
diff --git a/test/pending/run/t5427b.scala b/test/pending/run/t5427b.scala
deleted file mode 100644
index af1ae6ea2f..0000000000
--- a/test/pending/run/t5427b.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-import scala.reflect.runtime.universe._
-
-class Foo { val bar = 2 }
-
-object Test extends App {
- val foo = new Foo
- val tpe = getType(foo)
- val bar = tpe.nonPrivateMember(TermName("bar"))
- val value = getValue(foo, bar)
- println(value)
-} \ No newline at end of file
diff --git a/test/pending/run/t5427c.check b/test/pending/run/t5427c.check
deleted file mode 100644
index 32c91abbd6..0000000000
--- a/test/pending/run/t5427c.check
+++ /dev/null
@@ -1 +0,0 @@
-no public member \ No newline at end of file
diff --git a/test/pending/run/t5427c.scala b/test/pending/run/t5427c.scala
deleted file mode 100644
index ba71803080..0000000000
--- a/test/pending/run/t5427c.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-import scala.reflect.runtime.universe._
-
-class Foo(bar: Int)
-
-object Test extends App {
- val foo = new Foo(2)
- val tpe = getType(foo)
- val bar = tpe.nonPrivateMember(TermName("bar"))
- bar match {
- case NoSymbol => println("no public member")
- case _ => println("i'm screwed")
- }
-} \ No newline at end of file
diff --git a/test/pending/run/t5427d.check b/test/pending/run/t5427d.check
deleted file mode 100644
index d8263ee986..0000000000
--- a/test/pending/run/t5427d.check
+++ /dev/null
@@ -1 +0,0 @@
-2 \ No newline at end of file
diff --git a/test/pending/run/t5427d.scala b/test/pending/run/t5427d.scala
deleted file mode 100644
index 1d37dbdde3..0000000000
--- a/test/pending/run/t5427d.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-import scala.reflect.runtime.universe._
-
-class Foo(val bar: Int)
-
-object Test extends App {
- val foo = new Foo(2)
- val tpe = getType(foo)
- val bar = tpe.nonPrivateMember(TermName("bar"))
- val value = getValue(foo, bar)
- println(value)
-} \ No newline at end of file
diff --git a/test/pending/run/t5610b.check b/test/pending/run/t5610b.check
deleted file mode 100644
index 2aa46b3b91..0000000000
--- a/test/pending/run/t5610b.check
+++ /dev/null
@@ -1 +0,0 @@
-Stroke a kitten
diff --git a/test/pending/run/t5610b.scala b/test/pending/run/t5610b.scala
deleted file mode 100644
index d922d6333c..0000000000
--- a/test/pending/run/t5610b.scala
+++ /dev/null
@@ -1,21 +0,0 @@
-object Bug {
- def main(args: Array[String]) {
- var test: String = null
- val result = bar(foo(test))
- test = "bar"
-
- if (result.str == null) {
- println("Destroy ALL THE THINGS!!!")
- } else {
- println("Stroke a kitten")
- }
- }
-
- class Result(_str: => String) {
- lazy val str = _str
- }
-
- def foo(str: => String)(i: Int) = new Result(str)
-
- def bar(f: Int => Result) = f(42)
-} \ No newline at end of file
diff --git a/test/pending/run/t5692.flags b/test/pending/run/t5692.flags
deleted file mode 100644
index cd66464f2f..0000000000
--- a/test/pending/run/t5692.flags
+++ /dev/null
@@ -1 +0,0 @@
--language:experimental.macros \ No newline at end of file
diff --git a/test/pending/run/t5692/Impls_Macros_1.scala b/test/pending/run/t5692/Impls_Macros_1.scala
deleted file mode 100644
index 94bcffbcaf..0000000000
--- a/test/pending/run/t5692/Impls_Macros_1.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-import scala.reflect.macros.Context
-
-object Impls {
- def impl[A](c: reflect.macros.Context) = c.universe.reify(())
-}
-
-object Macros {
- def decl[A] = macro Impls.impl[A]
-} \ No newline at end of file
diff --git a/test/pending/run/t5692/Test_2.scala b/test/pending/run/t5692/Test_2.scala
deleted file mode 100644
index 29251a5ef5..0000000000
--- a/test/pending/run/t5692/Test_2.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-object Test extends App {
- val x = Macros.decl
- def y() { Macros.decl(); }
-} \ No newline at end of file
diff --git a/test/pending/run/t5722.scala b/test/pending/run/t5722.scala
deleted file mode 100644
index 21ace060d6..0000000000
--- a/test/pending/run/t5722.scala
+++ /dev/null
@@ -1,6 +0,0 @@
-object Test extends App {
- def foo[T: ClassTag] = println(classOf[T])
- foo[Int]
- foo[Array[Int]]
- foo[List[Int]]
-} \ No newline at end of file
diff --git a/test/pending/run/t5726a.scala b/test/pending/run/t5726a.scala
deleted file mode 100644
index 24d828a159..0000000000
--- a/test/pending/run/t5726a.scala
+++ /dev/null
@@ -1,17 +0,0 @@
-import language.dynamics
-
-class DynamicTest extends Dynamic {
- def selectDynamic(name: String) = s"value of $name"
- def updateDynamic(name: String)(value: Any) {
- println(s"You have just updated property '$name' with value: $value")
- }
-}
-
-object MyApp extends App {
- def testing() {
- val test = new DynamicTest
- test.firstName = "John"
- }
-
- testing()
-} \ No newline at end of file
diff --git a/test/pending/run/t5726b.scala b/test/pending/run/t5726b.scala
deleted file mode 100644
index 839dcf40b5..0000000000
--- a/test/pending/run/t5726b.scala
+++ /dev/null
@@ -1,16 +0,0 @@
-import language.dynamics
-
-class DynamicTest extends Dynamic {
- def updateDynamic(name: String)(value: Any) {
- println(s"You have just updated property '$name' with value: $value")
- }
-}
-
-object MyApp extends App {
- def testing() {
- val test = new DynamicTest
- test.firstName = "John"
- }
-
- testing()
-} \ No newline at end of file
diff --git a/test/pending/run/t5866b.scala b/test/pending/run/t5866b.scala
deleted file mode 100644
index 44d8b114b8..0000000000
--- a/test/pending/run/t5866b.scala
+++ /dev/null
@@ -1,17 +0,0 @@
-class Foo(val d: Double) extends AnyVal {
- override def toString = s"Foo($d)"
-}
-
-class Bar(val d: String) extends AnyVal {
- override def toString = s"Foo($d)"
-}
-
-object Test {
- def main(args: Array[String]): Unit = {
- val f: Foo = {val n: Any = null; n.asInstanceOf[Foo]}
- println(f)
-
- val b: Bar = {val n: Any = null; n.asInstanceOf[Bar]}
- println(b)
- }
-}
diff --git a/test/pending/run/t5882.scala b/test/pending/run/t5882.scala
deleted file mode 100644
index 47996d3068..0000000000
--- a/test/pending/run/t5882.scala
+++ /dev/null
@@ -1,14 +0,0 @@
-// SIP-15 was revised to allow nested classes in value classes.
-// This test checks that their basic functionality.
-
-class NodeOps(val n: Any) extends AnyVal { self =>
- class Foo() { def show = self.show(n) }
- def show(x: Any) = x.toString
-}
-
-
-object Test extends App {
-
- val n = new NodeOps("abc")
- assert(new n.Foo().show == "abc")
-}
diff --git a/test/pending/run/t5943b1.scala b/test/pending/run/t5943b1.scala
deleted file mode 100644
index 79c638fedc..0000000000
--- a/test/pending/run/t5943b1.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.reflect.runtime.{currentMirror => cm}
-import scala.tools.reflect.ToolBox
-
-// pending until https://issues.scala-lang.org/browse/SI-6393 is fixed
-object Test extends App {
- val tb = cm.mkToolBox()
- val expr = tb.parse("math.sqrt(4.0)")
- println(tb.typecheck(expr))
-} \ No newline at end of file
diff --git a/test/pending/run/t5943b2.scala b/test/pending/run/t5943b2.scala
deleted file mode 100644
index 85299d9f12..0000000000
--- a/test/pending/run/t5943b2.scala
+++ /dev/null
@@ -1,10 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.reflect.runtime.{currentMirror => cm}
-import scala.tools.reflect.ToolBox
-
-// pending until https://issues.scala-lang.org/browse/SI-6393 is fixed
-object Test extends App {
- val tb = cm.mkToolBox()
- val expr = tb.parse("math.sqrt(4.0)")
- println(tb.eval(expr))
-} \ No newline at end of file
diff --git a/test/pending/run/t6387.check b/test/pending/run/t6387.check
deleted file mode 100644
index 83b33d238d..0000000000
--- a/test/pending/run/t6387.check
+++ /dev/null
@@ -1 +0,0 @@
-1000
diff --git a/test/pending/run/t6387.scala b/test/pending/run/t6387.scala
deleted file mode 100644
index bbebb5f511..0000000000
--- a/test/pending/run/t6387.scala
+++ /dev/null
@@ -1,16 +0,0 @@
-trait A {
- def foo: Long
-}
-
-object Test {
- def a(): A = new A {
- var foo: Long = 1000L
-
- val test = () => {
- foo = 28
- }
- }
- def main(args: Array[String]) {
- println(a().foo)
- }
-}
diff --git a/test/pending/run/t6408.scala b/test/pending/run/t6408.scala
deleted file mode 100644
index ff17480b35..0000000000
--- a/test/pending/run/t6408.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-class X(val i: Int) extends AnyVal {
- class Inner(val q: Int) {
- def plus = i + q
- }
-}
-
-object Test extends App {
- val x = new X(11)
- val i = new x.Inner(22)
- assert(i.plus == 33)
-}
diff --git a/test/pending/run/t6591_4.check b/test/pending/run/t6591_4.check
deleted file mode 100644
index 0f1c0489e9..0000000000
--- a/test/pending/run/t6591_4.check
+++ /dev/null
@@ -1 +0,0 @@
-Expr(Block(List(ValDef(Modifiers(), newTermName("v"), Select(Ident(newTermName("A")), newTypeName("I")), Apply(Select(New(Select(Ident(newTermName("A")), newTypeName("I"))), nme.CONSTRUCTOR), List()))), Ident(newTermName("v"))))
diff --git a/test/pending/run/t6591_4.scala b/test/pending/run/t6591_4.scala
deleted file mode 100644
index f20c8e6127..0000000000
--- a/test/pending/run/t6591_4.scala
+++ /dev/null
@@ -1,17 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.tools.reflect.ToolBox
-import scala.tools.reflect.Eval
-
-class O { class I }
-
-class A extends O {
- val code = reify {
- val v: I = new I
- v
- }
- println(showRaw(code))
-}
-
-object Test extends App {
- val v: A#I = (new A).code.eval
-}
diff --git a/test/pending/run/t7733.check b/test/pending/run/t7733.check
deleted file mode 100644
index 19765bd501..0000000000
--- a/test/pending/run/t7733.check
+++ /dev/null
@@ -1 +0,0 @@
-null
diff --git a/test/pending/run/t7733/Separate_1.scala b/test/pending/run/t7733/Separate_1.scala
deleted file mode 100644
index a326ecd53e..0000000000
--- a/test/pending/run/t7733/Separate_1.scala
+++ /dev/null
@@ -1,5 +0,0 @@
-package test
-
-class Separate {
- for (i <- 1 to 10) println(i)
-} \ No newline at end of file
diff --git a/test/pending/run/t7733/Test_2.scala b/test/pending/run/t7733/Test_2.scala
deleted file mode 100644
index 28358574ec..0000000000
--- a/test/pending/run/t7733/Test_2.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-import scala.reflect.runtime.universe._
-import scala.reflect.runtime.{currentMirror => cm}
-import scala.tools.reflect.ToolBox
-
-object Test extends App {
- val tb = cm.mkToolBox()
- val code = tb.parse("{ val x: test.Separate$$anonfun$1 = null; x }")
- println(tb.eval(code))
-} \ No newline at end of file
diff --git a/test/pending/run/virtpatmat_anonfun_underscore.flags b/test/pending/run/virtpatmat_anonfun_underscore.flags
deleted file mode 100644
index 23e3dc7d26..0000000000
--- a/test/pending/run/virtpatmat_anonfun_underscore.flags
+++ /dev/null
@@ -1 +0,0 @@
--Yvirtpatmat \ No newline at end of file
diff --git a/test/pending/run/virtpatmat_anonfun_underscore.scala b/test/pending/run/virtpatmat_anonfun_underscore.scala
deleted file mode 100644
index db6705d025..0000000000
--- a/test/pending/run/virtpatmat_anonfun_underscore.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-object Test extends App {
- List(1,2,3) map (_ match { case x => x + 1} ) // `_ match` is redundant but shouldn't crash the compiler
- List((1,2)) map (_ match { case (x, z) => x + z})
-} \ No newline at end of file
diff --git a/test/pending/scalacheck/process.scala b/test/pending/scalacheck/process.scala
deleted file mode 100644
index f3aa872361..0000000000
--- a/test/pending/scalacheck/process.scala
+++ /dev/null
@@ -1,160 +0,0 @@
-/** process tests.
- */
-
-import java.io.{ File, FileNotFoundException, IOException, InputStream, OutputStream, FileInputStream }
-import java.net.{ URI, URISyntaxException, URL }
-import org.scalacheck._
-import Prop._
-import sys.process._
-import scala.tools.nsc.io.{ File => SFile }
-
-/** This has scrounged bits of sbt to flesh it out enough to run.
- */
-package processtest {
-
- object exit
- {
- def fn(code: Int) = System.exit(code)
- def main(args: Array[String]) = exit.fn(java.lang.Integer.parseInt(args(0)))
- }
- object cat
- {
- def main(args: Array[String])
- {
- try {
- if (args.length == 0)
- IO.transfer(System.in, System.out)
- else
- catFiles(args.toList)
- exit.fn(0)
- } catch {
- case e =>
- e.printStackTrace()
- System.err.println("Error: " + e.toString)
- exit.fn(1)
- }
- }
- private def catFiles(filenames: List[String]): Option[String] = filenames match {
- case head :: tail =>
- val file = new File(head)
- if (file.isDirectory)
- throw new IOException("Is directory: " + file)
- else if (file.exists) {
- IO.transfer(file, System.out)
- catFiles(tail)
- }
- else
- throw new FileNotFoundException("No such file or directory: " + file)
- case Nil => None
- }
- }
- object echo
- {
- def main(args: Array[String])
- {
- System.out.println(args.mkString(" "))
- }
- }
-}
-
-object IO {
- def transfer(in: InputStream, out: OutputStream): Unit = BasicIO.transferFully(in, out)
- def transfer(in: File, out: OutputStream): Unit = BasicIO.transferFully(new FileInputStream(in), out)
-
- def classLocation(cl: Class[_]): URL = {
- val codeSource = cl.getProtectionDomain.getCodeSource
- if(codeSource == null) sys.error("No class location for " + cl)
- else codeSource.getLocation
- }
- def classLocationFile(cl: Class[_]): File = toFile(classLocation(cl))
- def classLocation[T](implicit mf: Manifest[T]): URL = classLocation(mf.erasure)
- def classLocationFile[T](implicit mf: Manifest[T]): File = classLocationFile(mf.erasure)
-
- def toFile(url: URL) =
- try { new File(url.toURI) }
- catch { case _: URISyntaxException => new File(url.getPath) }
-}
-
-class ProcessSpecification extends Properties("Process I/O") {
- implicit val exitCodeArb: Arbitrary[Array[Byte]] = Arbitrary(Gen.choose(0, 10) flatMap { size =>
- Gen.resize(size, Arbitrary.arbArray[Byte].arbitrary)
- })
-
- /*property("Correct exit code") = forAll( (exitCode: Byte) => checkExit(exitCode))
- property("#&& correct") = forAll( (exitCodes: Array[Byte]) => checkBinary(exitCodes)(_ #&& _)(_ && _))
- property("#|| correct") = forAll( (exitCodes: Array[Byte]) => checkBinary(exitCodes)(_ #|| _)(_ || _))
- property("### correct") = forAll( (exitCodes: Array[Byte]) => checkBinary(exitCodes)(_ ### _)( (x,latest) => latest))*/
- property("Pipe to output file") = forAll( (data: Array[Byte]) => checkFileOut(data))
- property("Pipe to input file") = forAll( (data: Array[Byte]) => checkFileIn(data))
- property("Pipe to process") = forAll( (data: Array[Byte]) => checkPipe(data))
-
- private def checkBinary(codes: Array[Byte])(reduceProcesses: (ProcessBuilder, ProcessBuilder) => ProcessBuilder)(reduceExit: (Boolean, Boolean) => Boolean) =
- {
- (codes.length > 1) ==>
- {
- val unsignedCodes = codes.map(unsigned)
- val exitCode = unsignedCodes.map(code => Process(process("processtest.exit " + code))).reduceLeft(reduceProcesses) !
- val expectedExitCode = unsignedCodes.map(toBoolean).reduceLeft(reduceExit)
- toBoolean(exitCode) == expectedExitCode
- }
- }
- private def toBoolean(exitCode: Int) = exitCode == 0
- private def checkExit(code: Byte) =
- {
- val exitCode = unsigned(code)
- (process("processtest.exit " + exitCode) !) == exitCode
- }
- private def checkFileOut(data: Array[Byte]) =
- {
- withData(data) { (temporaryFile, temporaryFile2) =>
- val catCommand = process("processtest.cat " + temporaryFile.getAbsolutePath)
- catCommand #> temporaryFile2
- }
- }
- private def checkFileIn(data: Array[Byte]) =
- {
- withData(data) { (temporaryFile, temporaryFile2) =>
- val catCommand = process("processtest.cat")
- temporaryFile #> catCommand #> temporaryFile2
- }
- }
- private def checkPipe(data: Array[Byte]) =
- {
- withData(data) { (temporaryFile, temporaryFile2) =>
- val catCommand = process("processtest.cat")
- temporaryFile #> catCommand #| catCommand #> temporaryFile2
- }
- }
- private def temp() = SFile(File.createTempFile("processtest", ""))
- private def withData(data: Array[Byte])(f: (File, File) => ProcessBuilder) =
- {
- val temporaryFile1 = temp()
- val temporaryFile2 = temp()
- try {
- temporaryFile1 writeBytes data
- val process = f(temporaryFile1.jfile, temporaryFile2.jfile)
- ( process ! ) == 0 &&
- {
- val b1 = temporaryFile1.slurp()
- val b2 = temporaryFile2.slurp()
- b1 == b2
- }
- }
- finally
- {
- temporaryFile1.delete()
- temporaryFile2.delete()
- }
- }
- private def unsigned(b: Byte): Int = ((b: Int) +256) % 256
- private def process(command: String) = {
- val thisClasspath = List(getSource[ScalaObject], getSource[IO.type], getSource[SourceTag]).mkString(File.pathSeparator)
- "java -cp " + thisClasspath + " " + command
- }
- private def getSource[T : Manifest]: String =
- IO.classLocationFile[T].getAbsolutePath
-}
-private trait SourceTag
-
-
-object Test extends ProcessSpecification { }
diff --git a/test/pending/script/dashi.check b/test/pending/script/dashi.check
deleted file mode 100644
index c3cf137155..0000000000
--- a/test/pending/script/dashi.check
+++ /dev/null
@@ -1 +0,0 @@
-test.bippy = dingus
diff --git a/test/pending/script/dashi.flags b/test/pending/script/dashi.flags
deleted file mode 100644
index 5b46a61e4f..0000000000
--- a/test/pending/script/dashi.flags
+++ /dev/null
@@ -1 +0,0 @@
--i dashi/a.scala -e 'setBippy ; getBippy'
diff --git a/test/pending/script/dashi/a.scala b/test/pending/script/dashi/a.scala
deleted file mode 100644
index c4a07bf9ba..0000000000
--- a/test/pending/script/dashi/a.scala
+++ /dev/null
@@ -1,2 +0,0 @@
-def setBippy = sys.props("test.bippy") = "dingus"
-def getBippy = println("test.bippy = " + sys.props("test.bippy"))
diff --git a/test/pending/script/error-messages.check b/test/pending/script/error-messages.check
deleted file mode 100644
index 1aee1fb44a..0000000000
--- a/test/pending/script/error-messages.check
+++ /dev/null
@@ -1,7 +0,0 @@
-errors.scala:7: error: in XML literal: expected closing tag of hello
-<hello> </there>
- ^
-errors.scala:7: error: start tag was here: <hello>
-<hello> </there>
-
-two errors found
diff --git a/test/pending/script/error-messages.scala b/test/pending/script/error-messages.scala
deleted file mode 100644
index 2e2025b203..0000000000
--- a/test/pending/script/error-messages.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-exec scala -nocompdaemon "$0"
-!#
-
-// test that error messages print nicely
-
-<hello> </there>
-
-
diff --git a/test/pending/script/t2365.javaopts b/test/pending/script/t2365.javaopts
deleted file mode 100644
index 357e033c1c..0000000000
--- a/test/pending/script/t2365.javaopts
+++ /dev/null
@@ -1 +0,0 @@
--XX:MaxPermSize=25M
diff --git a/test/pending/script/t2365.sh b/test/pending/script/t2365.sh
deleted file mode 100755
index f3c44ad086..0000000000
--- a/test/pending/script/t2365.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-#
-# This script should fail with any build of scala where #2365
-# is not fixed, and otherwise succeed. Failure means running out
-# of PermGen space.
-
-CP=.:/local/lib/java/ivy.jar
-# SCALAC=/scala/inst/28/bin/scalac
-SCALAC=scalac
-RUN_OPTS="-XX:MaxPermSize=25M -verbose:gc"
-
-$SCALAC -cp $CP *.scala
-JAVA_OPTS="${RUN_OPTS}" scala -cp $CP Test
diff --git a/test/pending/script/t2365/Test.scala b/test/pending/script/t2365/Test.scala
deleted file mode 100644
index 110dea2ab6..0000000000
--- a/test/pending/script/t2365/Test.scala
+++ /dev/null
@@ -1,35 +0,0 @@
-import scala.tools.nsc.io._
-import java.net.URL
-
-object A { def apply(d: { def apply(): Int}) = d.apply() }
-object A2 { def apply(d: { def apply(): Int}) = d.apply() }
-object A3 { def apply(d: { def apply(): Int}) = d.apply() }
-object A4 { def apply(d: { def apply(): Int}) = d.apply() }
-
-class B extends Function0[Int] {
- def apply() = 3
-}
-
-object Test
-{
- type StructF0 = { def apply(): Int }
- def main(args: Array[String]) {
- for(i <- 0 until 150)
- println(i + " " + test(A.apply) + " " + test(A2.apply) + " " + test(A3.apply) + " " + test(A3.apply))
- }
-
- def test(withF0: StructF0 => Int): Int = {
- // Some large jar
- val jar = File("../../../../lib/scalacheck.jar").toURL
- // load a class in a separate loader that will be passed to A
- val loader = new java.net.URLClassLoader(Array(File(".").toURL, jar))
- // load a real class to fill perm gen space
- Class.forName("org.scalacheck.Properties", true, loader).newInstance
- // create a class from another class loader with an apply: Int method
- val b = Class.forName("B", true, loader).newInstance
-
- // pass instance to a, which will call apply using structural type reflection.
- // This should hold on to the class for B, which means bLoader will not get collected
- withF0(b.asInstanceOf[StructF0])
- }
-}
diff --git a/test/pending/script/t2365/runner.scala b/test/pending/script/t2365/runner.scala
deleted file mode 100755
index b5e05325cf..0000000000
--- a/test/pending/script/t2365/runner.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-#
-# This script should fail with any build of scala where #2365
-# is not fixed, and otherwise succeed. Failure means running out
-# of PermGen space.
-#
-
-scalac -cp .:/local/lib/java/ivy.jar Test.scala
-JAVA_OPTS="-XX:MaxPermSize=25M -verbose:gc" scalac -cp $CP Test
diff --git a/test/pending/shootout/fasta.check b/test/pending/shootout/fasta.check
deleted file mode 100644
index f1caba0d62..0000000000
--- a/test/pending/shootout/fasta.check
+++ /dev/null
@@ -1,171 +0,0 @@
->ONE Homo sapiens alu
-GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA
-TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT
-AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG
-GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG
-CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT
-GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA
-GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA
-TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG
-AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA
-GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT
-AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC
-AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG
-GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC
-CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG
-AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT
-TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA
-TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT
-GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG
-TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT
-CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG
-CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG
-TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA
-CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG
-AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG
-GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC
-TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA
-TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA
-GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT
-GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC
-ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT
-TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC
-CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG
-CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG
-GGCGACAGAGCGAGACTCCG
->TWO IUB ambiguity codes
-cttBtatcatatgctaKggNcataaaSatgtaaaDcDRtBggDtctttataattcBgtcg
-tactDtDagcctatttSVHtHttKtgtHMaSattgWaHKHttttagacatWatgtRgaaa
-NtactMcSMtYtcMgRtacttctWBacgaaatatagScDtttgaagacacatagtVgYgt
-cattHWtMMWcStgttaggKtSgaYaaccWStcgBttgcgaMttBYatcWtgacaYcaga
-gtaBDtRacttttcWatMttDBcatWtatcttactaBgaYtcttgttttttttYaaScYa
-HgtgttNtSatcMtcVaaaStccRcctDaataataStcYtRDSaMtDttgttSagtRRca
-tttHatSttMtWgtcgtatSSagactYaaattcaMtWatttaSgYttaRgKaRtccactt
-tattRggaMcDaWaWagttttgacatgttctacaaaRaatataataaMttcgDacgaSSt
-acaStYRctVaNMtMgtaggcKatcttttattaaaaagVWaHKYagtttttatttaacct
-tacgtVtcVaattVMBcttaMtttaStgacttagattWWacVtgWYagWVRctDattBYt
-gtttaagaagattattgacVatMaacattVctgtBSgaVtgWWggaKHaatKWcBScSWa
-accRVacacaaactaccScattRatatKVtactatatttHttaagtttSKtRtacaaagt
-RDttcaaaaWgcacatWaDgtDKacgaacaattacaRNWaatHtttStgttattaaMtgt
-tgDcgtMgcatBtgcttcgcgaDWgagctgcgaggggVtaaScNatttacttaatgacag
-cccccacatYScaMgtaggtYaNgttctgaMaacNaMRaacaaacaKctacatagYWctg
-ttWaaataaaataRattagHacacaagcgKatacBttRttaagtatttccgatctHSaat
-actcNttMaagtattMtgRtgaMgcataatHcMtaBSaRattagttgatHtMttaaKagg
-YtaaBataSaVatactWtataVWgKgttaaaacagtgcgRatatacatVtHRtVYataSa
-KtWaStVcNKHKttactatccctcatgWHatWaRcttactaggatctataDtDHBttata
-aaaHgtacVtagaYttYaKcctattcttcttaataNDaaggaaaDYgcggctaaWSctBa
-aNtgctggMBaKctaMVKagBaactaWaDaMaccYVtNtaHtVWtKgRtcaaNtYaNacg
-gtttNattgVtttctgtBaWgtaattcaagtcaVWtactNggattctttaYtaaagccgc
-tcttagHVggaYtgtNcDaVagctctctKgacgtatagYcctRYHDtgBattDaaDgccK
-tcHaaStttMcctagtattgcRgWBaVatHaaaataYtgtttagMDMRtaataaggatMt
-ttctWgtNtgtgaaaaMaatatRtttMtDgHHtgtcattttcWattRSHcVagaagtacg
-ggtaKVattKYagactNaatgtttgKMMgYNtcccgSKttctaStatatNVataYHgtNa
-BKRgNacaactgatttcctttaNcgatttctctataScaHtataRagtcRVttacDSDtt
-aRtSatacHgtSKacYagttMHtWataggatgactNtatSaNctataVtttRNKtgRacc
-tttYtatgttactttttcctttaaacatacaHactMacacggtWataMtBVacRaSaatc
-cgtaBVttccagccBcttaRKtgtgcctttttRtgtcagcRttKtaaacKtaaatctcac
-aattgcaNtSBaaccgggttattaaBcKatDagttactcttcattVtttHaaggctKKga
-tacatcBggScagtVcacattttgaHaDSgHatRMaHWggtatatRgccDttcgtatcga
-aacaHtaagttaRatgaVacttagattVKtaaYttaaatcaNatccRttRRaMScNaaaD
-gttVHWgtcHaaHgacVaWtgttScactaagSgttatcttagggDtaccagWattWtRtg
-ttHWHacgattBtgVcaYatcggttgagKcWtKKcaVtgaYgWctgYggVctgtHgaNcV
-taBtWaaYatcDRaaRtSctgaHaYRttagatMatgcatttNattaDttaattgttctaa
-ccctcccctagaWBtttHtBccttagaVaatMcBHagaVcWcagBVttcBtaYMccagat
-gaaaaHctctaacgttagNWRtcggattNatcRaNHttcagtKttttgWatWttcSaNgg
-gaWtactKKMaacatKatacNattgctWtatctaVgagctatgtRaHtYcWcttagccaa
-tYttWttaWSSttaHcaaaaagVacVgtaVaRMgattaVcDactttcHHggHRtgNcctt
-tYatcatKgctcctctatVcaaaaKaaaagtatatctgMtWtaaaacaStttMtcgactt
-taSatcgDataaactaaacaagtaaVctaggaSccaatMVtaaSKNVattttgHccatca
-cBVctgcaVatVttRtactgtVcaattHgtaaattaaattttYtatattaaRSgYtgBag
-aHSBDgtagcacRHtYcBgtcacttacactaYcgctWtattgSHtSatcataaatataHt
-cgtYaaMNgBaatttaRgaMaatatttBtttaaaHHKaatctgatWatYaacttMctctt
-ttVctagctDaaagtaVaKaKRtaacBgtatccaaccactHHaagaagaaggaNaaatBW
-attccgStaMSaMatBttgcatgRSacgttVVtaaDMtcSgVatWcaSatcttttVatag
-ttactttacgatcaccNtaDVgSRcgVcgtgaacgaNtaNatatagtHtMgtHcMtagaa
-attBgtataRaaaacaYKgtRccYtatgaagtaataKgtaaMttgaaRVatgcagaKStc
-tHNaaatctBBtcttaYaBWHgtVtgacagcaRcataWctcaBcYacYgatDgtDHccta
->THREE Homo sapiens frequency
-aacacttcaccaggtatcgtgaaggctcaagattacccagagaacctttgcaatataaga
-atatgtatgcagcattaccctaagtaattatattctttttctgactcaaagtgacaagcc
-ctagtgtatattaaatcggtatatttgggaaattcctcaaactatcctaatcaggtagcc
-atgaaagtgatcaaaaaagttcgtacttataccatacatgaattctggccaagtaaaaaa
-tagattgcgcaaaattcgtaccttaagtctctcgccaagatattaggatcctattactca
-tatcgtgtttttctttattgccgccatccccggagtatctcacccatccttctcttaaag
-gcctaatattacctatgcaaataaacatatattgttgaaaattgagaacctgatcgtgat
-tcttatgtgtaccatatgtatagtaatcacgcgactatatagtgctttagtatcgcccgt
-gggtgagtgaatattctgggctagcgtgagatagtttcttgtcctaatatttttcagatc
-gaatagcttctatttttgtgtttattgacatatgtcgaaactccttactcagtgaaagtc
-atgaccagatccacgaacaatcttcggaatcagtctcgttttacggcggaatcttgagtc
-taacttatatcccgtcgcttactttctaacaccccttatgtatttttaaaattacgttta
-ttcgaacgtacttggcggaagcgttattttttgaagtaagttacattgggcagactcttg
-acattttcgatacgactttctttcatccatcacaggactcgttcgtattgatatcagaag
-ctcgtgatgattagttgtcttctttaccaatactttgaggcctattctgcgaaatttttg
-ttgccctgcgaacttcacataccaaggaacacctcgcaacatgccttcatatccatcgtt
-cattgtaattcttacacaatgaatcctaagtaattacatccctgcgtaaaagatggtagg
-ggcactgaggatatattaccaagcatttagttatgagtaatcagcaatgtttcttgtatt
-aagttctctaaaatagttacatcgtaatgttatctcgggttccgcgaataaacgagatag
-attcattatatatggccctaagcaaaaacctcctcgtattctgttggtaattagaatcac
-acaatacgggttgagatattaattatttgtagtacgaagagatataaaaagatgaacaat
-tactcaagtcaagatgtatacgggatttataataaaaatcgggtagagatctgctttgca
-attcagacgtgccactaaatcgtaatatgtcgcgttacatcagaaagggtaactattatt
-aattaataaagggcttaatcactacatattagatcttatccgatagtcttatctattcgt
-tgtatttttaagcggttctaattcagtcattatatcagtgctccgagttctttattattg
-ttttaaggatgacaaaatgcctcttgttataacgctgggagaagcagactaagagtcgga
-gcagttggtagaatgaggctgcaaaagacggtctcgacgaatggacagactttactaaac
-caatgaaagacagaagtagagcaaagtctgaagtggtatcagcttaattatgacaaccct
-taatacttccctttcgccgaatactggcgtggaaaggttttaaaagtcgaagtagttaga
-ggcatctctcgctcataaataggtagactactcgcaatccaatgtgactatgtaatactg
-ggaacatcagtccgcgatgcagcgtgtttatcaaccgtccccactcgcctggggagacat
-gagaccacccccgtggggattattagtccgcagtaatcgactcttgacaatccttttcga
-ttatgtcatagcaatttacgacagttcagcgaagtgactactcggcgaaatggtattact
-aaagcattcgaacccacatgaatgtgattcttggcaatttctaatccactaaagcttttc
-cgttgaatctggttgtagatatttatataagttcactaattaagatcacggtagtatatt
-gatagtgatgtctttgcaagaggttggccgaggaatttacggattctctattgatacaat
-ttgtctggcttataactcttaaggctgaaccaggcgtttttagacgacttgatcagctgt
-tagaatggtttggactccctctttcatgtcagtaacatttcagccgttattgttacgata
-tgcttgaacaatattgatctaccacacacccatagtatattttataggtcatgctgttac
-ctacgagcatggtattccacttcccattcaatgagtattcaacatcactagcctcagaga
-tgatgacccacctctaataacgtcacgttgcggccatgtgaaacctgaacttgagtagac
-gatatcaagcgctttaaattgcatataacatttgagggtaaagctaagcggatgctttat
-ataatcaatactcaataataagatttgattgcattttagagttatgacacgacatagttc
-actaacgagttactattcccagatctagactgaagtactgatcgagacgatccttacgtc
-gatgatcgttagttatcgacttaggtcgggtctctagcggtattggtacttaaccggaca
-ctatactaataacccatgatcaaagcataacagaatacagacgataatttcgccaacata
-tatgtacagaccccaagcatgagaagctcattgaaagctatcattgaagtcccgctcaca
-atgtgtcttttccagacggtttaactggttcccgggagtcctggagtttcgacttacata
-aatggaaacaatgtattttgctaatttatctatagcgtcatttggaccaatacagaatat
-tatgttgcctagtaatccactataacccgcaagtgctgatagaaaatttttagacgattt
-ataaatgccccaagtatccctcccgtgaatcctccgttatactaattagtattcgttcat
-acgtataccgcgcatatatgaacatttggcgataaggcgcgtgaattgttacgtgacaga
-gatagcagtttcttgtgatatggttaacagacgtacatgaagggaaactttatatctata
-gtgatgcttccgtagaaataccgccactggtctgccaatgatgaagtatgtagctttagg
-tttgtactatgaggctttcgtttgtttgcagagtataacagttgcgagtgaaaaaccgac
-gaatttatactaatacgctttcactattggctacaaaatagggaagagtttcaatcatga
-gagggagtatatggatgctttgtagctaaaggtagaacgtatgtatatgctgccgttcat
-tcttgaaagatacataagcgataagttacgacaattataagcaacatccctaccttcgta
-acgatttcactgttactgcgcttgaaatacactatggggctattggcggagagaagcaga
-tcgcgccgagcatatacgagacctataatgttgatgatagagaaggcgtctgaattgata
-catcgaagtacactttctttcgtagtatctctcgtcctctttctatctccggacacaaga
-attaagttatatatatagagtcttaccaatcatgttgaatcctgattctcagagttcttt
-ggcgggccttgtgatgactgagaaacaatgcaatattgctccaaatttcctaagcaaatt
-ctcggttatgttatgttatcagcaaagcgttacgttatgttatttaaatctggaatgacg
-gagcgaagttcttatgtcggtgtgggaataattcttttgaagacagcactccttaaataa
-tatcgctccgtgtttgtatttatcgaatgggtctgtaaccttgcacaagcaaatcggtgg
-tgtatatatcggataacaattaatacgatgttcatagtgacagtatactgatcgagtcct
-ctaaagtcaattacctcacttaacaatctcattgatgttgtgtcattcccggtatcgccc
-gtagtatgtgctctgattgaccgagtgtgaaccaaggaacatctactaatgcctttgtta
-ggtaagatctctctgaattccttcgtgccaacttaaaacattatcaaaatttcttctact
-tggattaactacttttacgagcatggcaaattcccctgtggaagacggttcattattatc
-ggaaaccttatagaaattgcgtgttgactgaaattagatttttattgtaagagttgcatc
-tttgcgattcctctggtctagcttccaatgaacagtcctcccttctattcgacatcgggt
-ccttcgtacatgtctttgcgatgtaataattaggttcggagtgtggccttaatgggtgca
-actaggaatacaacgcaaatttgctgacatgatagcaaatcggtatgccggcaccaaaac
-gtgctccttgcttagcttgtgaatgagactcagtagttaaataaatccatatctgcaatc
-gattccacaggtattgtccactatctttgaactactctaagagatacaagcttagctgag
-accgaggtgtatatgactacgctgatatctgtaaggtaccaatgcaggcaaagtatgcga
-gaagctaataccggctgtttccagctttataagattaaaatttggctgtcctggcggcct
-cagaattgttctatcgtaatcagttggttcattaattagctaagtacgaggtacaactta
-tctgtcccagaacagctccacaagtttttttacagccgaaacccctgtgtgaatcttaat
-atccaagcgcgttatctgattagagtttacaactcagtattttatcagtacgttttgttt
-ccaacattacccggtatgacaaaatgacgccacgtgtcgaataatggtctgaccaatgta
-ggaagtgaaaagataaatat
diff --git a/test/pending/shootout/fasta.scala b/test/pending/shootout/fasta.scala
deleted file mode 100644
index ae99ba5936..0000000000
--- a/test/pending/shootout/fasta.scala
+++ /dev/null
@@ -1,162 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy
-*/
-
-import java.io._
-
-object fasta {
- def main(args: Array[String]) = {
-
- val ALU =
- "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG" +
- "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA" +
- "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT" +
- "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA" +
- "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG" +
- "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC" +
- "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA"
-
- val _IUB = Array(
- ('a', 0.27),
- ('c', 0.12),
- ('g', 0.12),
- ('t', 0.27),
-
- ('B', 0.02),
- ('D', 0.02),
- ('H', 0.02),
- ('K', 0.02),
- ('M', 0.02),
- ('N', 0.02),
- ('R', 0.02),
- ('S', 0.02),
- ('V', 0.02),
- ('W', 0.02),
- ('Y', 0.02)
- )
-
- val IUB = makeCumulative(_IUB)
-
- val _HomoSapiens = Array(
- ('a', 0.3029549426680),
- ('c', 0.1979883004921),
- ('g', 0.1975473066391),
- ('t', 0.3015094502008)
- )
-
- val HomoSapiens = makeCumulative(_HomoSapiens)
-
-
- val n = Integer parseInt(args(0))
- val s = new FastaOutputStream(System.out)
-
- s.writeDescription("ONE Homo sapiens alu")
- s.writeRepeatingSequence(ALU,n*2)
-
- s.writeDescription("TWO IUB ambiguity codes")
- s.writeRandomSequence(IUB,n*3)
-
- s.writeDescription("THREE Homo sapiens frequency")
- s.writeRandomSequence(HomoSapiens,n*5)
-
- s.close
- }
-
- def makeCumulative(a: Array[Tuple2[Char,Double]]) = {
- var cp = 0.0
- a map (frequency =>
- frequency match {
- case (code,percent) =>
- cp = cp + percent; new Frequency(code.toByte,cp)
- }
- )
- }
-
-}
-
-
-// We could use instances of Pair or Tuple2 but specific labels
-// make the code more readable than index numbers
-
-class Frequency(_code: Byte, _percent: Double){
- var code = _code; var percent = _percent;
-}
-
-
-// extend the Java BufferedOutputStream class
-
-class FastaOutputStream(out: OutputStream) extends BufferedOutputStream(out) {
-
- private val LineLength = 60
- private val nl = '\n'.toByte
-
- def writeDescription(desc: String) = { write( (">" + desc + "\n").getBytes ) }
-
- def writeRepeatingSequence(_alu: String, length: Int) = {
- val alu = _alu.getBytes
- var n = length; var k = 0; val kn = alu.length;
-
- while (n > 0) {
- val m = if (n < LineLength) n else LineLength
-
- var i = 0
- while (i < m){
- if (k == kn) k = 0
- val b = alu(k)
- if (count < buf.length){ buf(count) = b; count = count + 1 }
- else { write(b) } // flush buffer
- k = k+1
- i = i+1
- }
-
- write(nl)
- n = n - LineLength
- }
-
- }
-
- def writeRandomSequence(distribution: Array[Frequency], length: Int) = {
- var n = length
- while (n > 0) {
- val m = if (n < LineLength) n else LineLength
-
- var i = 0
- while (i < m){
- val b = selectRandom(distribution)
- if (count < buf.length){ buf(count) = b; count = count + 1 }
- else { write(b) } // flush buffer
- i = i+1
- }
-
- if (count < buf.length){ buf(count) = nl; count = count + 1 }
- else { write(nl) } // flush buffer
- n = n - LineLength
- }
- }
-
- private def selectRandom(distribution: Array[Frequency]): Byte = {
- val n = distribution.length
- val r = RandomNumber scaledTo(1.0)
-
- var i = 0
- while (i < n) {
- if (r < distribution(i).percent) return distribution(i).code
- i = i+1
- }
- return distribution(n-1).code
- }
-}
-
-
-object RandomNumber {
- private val IM = 139968
- private val IA = 3877
- private val IC = 29573
- private var seed = 42
-
- def scaledTo(max: Double) = {
- seed = (seed * IA + IC) % IM
- max * seed / IM
- }
-}
diff --git a/test/pending/shootout/fasta.scala.runner b/test/pending/shootout/fasta.scala.runner
deleted file mode 100644
index e95a749cf2..0000000000
--- a/test/pending/shootout/fasta.scala.runner
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends Application {
- for(n <- List(25000,250000,2500000)) fasta.main(Array(n.toString))
-}
diff --git a/test/pending/shootout/harmonic.scala-2.scala b/test/pending/shootout/harmonic.scala-2.scala
deleted file mode 100644
index a55e164e50..0000000000
--- a/test/pending/shootout/harmonic.scala-2.scala
+++ /dev/null
@@ -1,14 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy (Scala novice)
-*/
-
-object harmonic {
- def main(args: Array[String]) = {
- val n = Integer.parseInt(args(0));
- var partialSum = 0.0;
-
- for (i <- Iterator.range(1,n+1)) partialSum = partialSum + 1.0/i;
- Console.printf("{0,number,#.000000000}\n")(partialSum);
- }
-}
diff --git a/test/pending/shootout/harmonic.scala-2.scala.runner b/test/pending/shootout/harmonic.scala-2.scala.runner
deleted file mode 100644
index d0ea85742a..0000000000
--- a/test/pending/shootout/harmonic.scala-2.scala.runner
+++ /dev/null
@@ -1,16 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy (Scala novice)
-*/
-object Test extends Application {
- for(n <- List(6000000,8000000,10000000)) harmonic.main(Array(n.toString))
-}
-object harmonic {
- def main(args: Array[String]) = {
- val n = Integer.parseInt(args(0));
- var partialSum = 0.0;
-
- for (i <- Iterator.range(1,n+1)) partialSum = partialSum + 1.0/i;
- Console.printf("{0,number,#.000000000}\n")(partialSum);
- }
-}
diff --git a/test/pending/shootout/harmonic.scala-3.scala b/test/pending/shootout/harmonic.scala-3.scala
deleted file mode 100644
index dc631fcf12..0000000000
--- a/test/pending/shootout/harmonic.scala-3.scala
+++ /dev/null
@@ -1,15 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy (Scala novice)
-*/
-
-object harmonic {
- def main(args: Array[String]) = {
- val n = Integer.parseInt(args(0));
- var partialSum = 0.0;
- var i = 1;
-
- while (i < n){ partialSum = partialSum + 1.0/i; i = i + 1; }
- Console.printf("{0,number,#.000000000}\n", partialSum);
- }
-}
diff --git a/test/pending/shootout/harmonic.scala-3.scala.runner b/test/pending/shootout/harmonic.scala-3.scala.runner
deleted file mode 100644
index b5eda3f034..0000000000
--- a/test/pending/shootout/harmonic.scala-3.scala.runner
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends Application {
- for(n <- List(6000000,8000000,10000000)) harmonic.main(Array(n.toString))
-}
diff --git a/test/pending/shootout/heapsort.scala b/test/pending/shootout/heapsort.scala
deleted file mode 100644
index 59b1fe27cb..0000000000
--- a/test/pending/shootout/heapsort.scala
+++ /dev/null
@@ -1,72 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy (Scala novice)
-*/
-
-object heapsort {
- def main(args: Array[String]) = {
- val n = toPositiveInt(args);
-
- val numbers = new Array[Double](n+1);
- for (i <- Iterator.range(1,n+1))
- numbers(i) = generate(100.0);
-
- heapsort(n, numbers);
-
- Console.printf("{0,number,#.000000000}\n", numbers(n));
- }
-
-
- def heapsort(n: Int, ra: Array[Double]): Unit = {
- var l = 0; var j = 0; var ir = 0; var i = 0;
- var rra = 0.0d;
-
- if (n < 2) return;
- l = (n >> 1) + 1;
- ir = n;
- while (true) {
- if (l > 1) { l = l-1; rra = ra(l); }
- else {
- rra = ra(ir);
- ra(ir) = ra(1);
- ir = ir-1;
- if (ir == 1) {
- ra(1) = rra;
- return;
- }
- }
- i = l;
- j = l << 1;
- while (j <= ir) {
- if (j < ir && ra(j) < ra(j+1)) { j = j+1; }
- if (rra < ra(j)) {
- ra(i) = ra(j);
- i = j;
- j = j + i;
- }
- else j = ir + 1;
- }
- ra(i) = rra;
- }
- }
-
-
- private val IM = 139968;
- private val IA = 3877;
- private val IC = 29573;
- private var seed = 42;
-
- private def generate(max: Double) = {
- seed = (seed * IA + IC) % IM;
- max * seed / IM;
- }
-
-
- private def toPositiveInt(s: Array[String]) = {
- val i =
- try { Integer.parseInt(s(0)); }
- catch { case _ => 1 }
- if (i>0) i; else 1;
- }
-
-}
diff --git a/test/pending/shootout/heapsort.scala.runner b/test/pending/shootout/heapsort.scala.runner
deleted file mode 100644
index 07e4ec7fbd..0000000000
--- a/test/pending/shootout/heapsort.scala.runner
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends Application {
- for(n <- List(20000,40000,60000,80000,100000)) heapsort.main(Array(n.toString))
-}
diff --git a/test/pending/shootout/mandelbrot.scala-2.check b/test/pending/shootout/mandelbrot.scala-2.check
deleted file mode 100644
index 2f7bbbc6b0..0000000000
--- a/test/pending/shootout/mandelbrot.scala-2.check
+++ /dev/null
Binary files differ
diff --git a/test/pending/shootout/mandelbrot.scala-2.scala b/test/pending/shootout/mandelbrot.scala-2.scala
deleted file mode 100644
index dffdc354a0..0000000000
--- a/test/pending/shootout/mandelbrot.scala-2.scala
+++ /dev/null
@@ -1,79 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy
-*/
-
-// This test is in pending because it fails on windows only,
-// but partest's output and the fact that this test outputs in
-// binary makes it a challenge to debug remotely. However,
-// it's easy to guess that it has to do with the BufferedOutputStream
-// and some kind of windows-specific damage that requires an extra
-// flush, or different line-ending characters, or any of the various
-// write-once-know-quirks-everywhere aspects of java i/o.
-//
-// [partest] testing: [...]\files\shootout\mandelbrot.scala-2.scala [FAILED]
-// [partest] P4
-// [partest] 200 200
-// [partest]
-// ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
-// ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
-// [etc]
-
-import java.io.BufferedOutputStream
-
-object mandelbrot {
- def main(args: Array[String]) = {
- val side = Integer.parseInt(args(0))
- val limitSquared = 4.0
- val max = 50
- var bits = 0
- var bitnum = 0
- val w = new BufferedOutputStream(System.out)
-
- Console.println("P4\n" + side + " " + side)
-
- var y = 0
- while (y < side){
-
- var x = 0
- while (x < side){
-
- val cr = 2.0 * x / side - 1.5
- val ci = 2.0 * y / side - 1.0
-
- var zr = 0.0; var zi = 0.0
- var tr = 0.0; var ti = 0.0
-
- var j = max
- do {
- zi = 2.0 * zr * zi + ci
- zr = tr - ti + cr
- ti = zi*zi
- tr = zr*zr
-
- j = j - 1
- } while (!(tr + ti > limitSquared) && j > 0)
-
-
- bits = bits << 1
- if (!(tr + ti > limitSquared)) bits = bits + 1
- bitnum = bitnum + 1
-
- if (x == side - 1){
- bits = bits << (8 - bitnum)
- bitnum = 8
- }
-
- if (bitnum == 8){
- w.write(bits.toByte)
- bits = 0
- bitnum = 0
- }
-
- x = x + 1
- }
- y = y + 1
- }
- w.close
- }
-}
diff --git a/test/pending/shootout/mandelbrot.scala-2.scala.runner b/test/pending/shootout/mandelbrot.scala-2.scala.runner
deleted file mode 100644
index 27f69f6aec..0000000000
--- a/test/pending/shootout/mandelbrot.scala-2.scala.runner
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends Application {
- for(n <- List(200,400,600)) mandelbrot.main(Array(n.toString))
-}
diff --git a/test/pending/shootout/message.check b/test/pending/shootout/message.check
deleted file mode 100644
index 354b2529b2..0000000000
--- a/test/pending/shootout/message.check
+++ /dev/null
@@ -1 +0,0 @@
-500000
diff --git a/test/pending/shootout/message.javaopts b/test/pending/shootout/message.javaopts
deleted file mode 100644
index 1879c77427..0000000000
--- a/test/pending/shootout/message.javaopts
+++ /dev/null
@@ -1 +0,0 @@
--Xss128k
diff --git a/test/pending/shootout/message.scala b/test/pending/shootout/message.scala
deleted file mode 100644
index a7a1dacc9d..0000000000
--- a/test/pending/shootout/message.scala
+++ /dev/null
@@ -1,47 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy
-*/
-
-
-import scala.concurrent._
-
-object message {
- def main(args: Array[String]) = {
- val n = Integer.parseInt(args(0))
- val nActors = 500
- val finalSum = n * nActors
-
- case class Message(value: Int)
-
- class Incrementor(next: Pid) extends Actor {
- var sum = 0
-
- override def run() = {
- while (true) {
- receive {
- case Message(value) =>
- val j = value + 1
- if (null != next){
- next ! Message(j)
- } else {
- sum = sum + j
- if (sum >= finalSum){
- Console.println(sum);
- System.exit(0) // exit without cleaning up
- }
- }
- }
- }
- }
-
- def pid() = { this.start; this.self }
- }
-
- def actorChain(i: Int, a: Pid): Pid =
- if (i > 0) actorChain(i-1, new Incrementor(a).pid ) else a
-
- val firstActor = actorChain(nActors, null)
- var i = n; while (i > 0){ firstActor ! Message(0); i = i-1 }
- }
-}
diff --git a/test/pending/shootout/message.scala.runner b/test/pending/shootout/message.scala.runner
deleted file mode 100644
index ffbee1640b..0000000000
--- a/test/pending/shootout/message.scala.runner
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends Application {
- for(n <- List(1000,2000,3000)) message.main(Array(n.toString))
-}
diff --git a/test/pending/shootout/meteor.scala b/test/pending/shootout/meteor.scala
deleted file mode 100644
index 6dbd3cf459..0000000000
--- a/test/pending/shootout/meteor.scala
+++ /dev/null
@@ -1,497 +0,0 @@
-import scala.reflect.{ClassTag, classTag}
-
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy
-*/
-
-// This is an un-optimised example implementation
-
-
-import scala.collection.mutable._
-
-object meteor {
- def main(args: Array[String]) = {
- val solver = new Solver( Integer.parseInt(args(0)) )
- solver.findSolutions
- solver.printSolutions
- }
-}
-
-
-
-
-// Solver.scala
-// import scala.collection.mutable._
-
-final class Solver (n: Int) {
- private var countdown = n
- private var first: String = _
- private var last: String = _
-
- private val board = new Board()
-
- val pieces = Array(
- new Piece(0), new Piece(1), new Piece(2), new Piece(3), new Piece(4),
- new Piece(5), new Piece(6), new Piece(7), new Piece(8), new Piece(9) )
-
- val unplaced = new BitSet(pieces.length)
-
- { unplaced ++= (0 until pieces.length) }
-
-
- def findSolutions(): Unit = {
- if (countdown == 0) return
-
- if (unplaced.size > 0){
- val emptyCellIndex = board.firstEmptyCellIndex
-
- for (k <- Iterator.range(0,pieces.length)){
- if (unplaced.contains(k)){
- unplaced -= k
-
- for (i <- Iterator.range(0,Piece.orientations)){
- val piece = pieces(k).nextOrientation
-
- for (j <- Iterator.range(0,Piece.size)){
- if (board.add(j,emptyCellIndex,piece)) {
-
- if (!shouldPrune) findSolutions
-
- board.remove(piece)
- }
- }
- }
- unplaced += k
- }
- }
- }
- else {
- puzzleSolved
- }
- }
-
- private def puzzleSolved() = {
- val b = board.asString
- if (first == null){
- first = b; last = b
- } else {
- if (b < first){ first = b } else { if (b > last){ last = b } }
- }
- countdown = countdown - 1
- }
-
- private def shouldPrune() = {
- board.unmark
- !board.cells.forall(c => c.contiguousEmptyCells % Piece.size == 0)
- }
-
-
- def printSolutions() = {
-
- def printBoard(s: String) = {
- var indent = false
- var i = 0
- while (i < s.length){
- if (indent) Console.print(' ')
- for (j <- Iterator.range(0,Board.cols)){
- Console.print(s.charAt(i)); Console.print(' ')
- i = i + 1
- }
- Console.print('\n')
- indent = !indent
- }
- Console.print('\n')
- }
-
- Console.print(n + " solutions found\n\n")
- printBoard(first)
- printBoard(last)
- }
-
-/*
- def printPieces() =
- for (i <- Iterator.range(0,Board.pieces)) pieces(i).print
-*/
-
-}
-
-
-
-
-// Board.scala
-// import scala.collection.mutable._
-
-object Board {
- val cols = 5
- val rows = 10
- val size = rows * cols
-}
-
-final class Board {
- val cells = boardCells()
-
- val cellsPieceWillFill = new Array[BoardCell](Piece.size)
- var cellCount = 0
-
- def unmark() = for (c <- cells) c.unmark
-
- def asString() =
- new String( cells map(
- c => if (c.piece == null) '-'.toByte
- else (c.piece.number + 48).toByte ))
-
- def firstEmptyCellIndex() = cells.findIndexOf(c => c.isEmpty)
-
- def add(pieceIndex: Int, boardIndex: Int, p: Piece) = {
- cellCount = 0
- p.unmark
-
- find( p.cells(pieceIndex), cells(boardIndex))
-
- val boardHasSpace = cellCount == Piece.size &&
- cellsPieceWillFill.forall(c => c.isEmpty)
-
- if (boardHasSpace) cellsPieceWillFill.foreach(c => c.piece = p)
-
- boardHasSpace
- }
-
- def remove(piece: Piece) = for (c <- cells; if c.piece == piece) c.empty
-
-
- private def find(p: PieceCell, b: BoardCell): Unit = {
- if (p != null && !p.marked && b != null){
- cellsPieceWillFill(cellCount) = b
- cellCount = cellCount + 1
- p.mark
- for (i <- Iterator.range(0,Cell.sides)) find(p.next(i), b.next(i))
- }
- }
-
-
- private def boardCells() = {
- val a = for (i <- Array.range(0,Board.size)) yield new BoardCell(i)
- val m = (Board.size / Board.cols) - 1
-
- for (i <- Iterator.range(0,a.length)){
- val row = i / Board.cols
- val isFirst = i % Board.cols == 0
- val isLast = (i+1) % Board.cols == 0
- val c = a(i)
-
- if (row % 2 == 1) {
- if (!isLast) c.next(Cell.NE) = a(i-(Board.cols-1))
- c.next(Cell.NW) = a(i-Board.cols)
- if (row != m) {
- if (!isLast) c.next(Cell.SE) = a(i+(Board.cols+1))
- c.next(Cell.SW) = a(i+Board.cols)
- }
- } else {
- if (row != 0) {
- if (!isFirst) c.next(Cell.NW) = a(i-(Board.cols+1))
- c.next(Cell.NE) = a(i-Board.cols)
- }
- if (row != m) {
- if (!isFirst) c.next(Cell.SW) = a(i+(Board.cols-1))
- c.next(Cell.SE) = a(i+Board.cols)
- }
- }
- if (!isFirst) c.next(Cell.W) = a(i-1)
- if (!isLast) c.next(Cell.E) = a(i+1)
- }
- a
- }
-
-
-/*
-// Printing all the board cells and their neighbours
-// helps check that they are connected properly
-
- def printBoardCellsAndNeighbours() = {
- Console.println("cell\tNW NE W E SW SE")
- for (i <- Iterator.range(0,Board.size)){
- Console.print(i + "\t")
- for (j <- Iterator.range(0,Cell.sides)){
- val c = cells(i).next(j)
- if (c == null)
- Console.print("-- ")
- else
- Console.printf("{0,number,00} ")(c.number)
- }
- Console.println("")
- }
- Console.println("")
- }
-*/
-
-}
-
-
-
-
-// Piece.scala
-
-object Piece {
- val size = 5
- val rotations = Cell.sides
- val flips = 2
- val orientations = rotations * flips
-}
-
-final class Piece(_number: Int) {
- val number = _number
- val cells = for (i <- Array.range(0,Piece.size)) yield new PieceCell()
-
- {
- number match {
- case 0 => make0
- case 1 => make1
- case 2 => make2
- case 3 => make3
- case 4 => make4
- case 5 => make5
- case 6 => make6
- case 7 => make7
- case 8 => make8
- case 9 => make9
- }
- }
-
- def flip() = for (c <- cells) c.flip
- def rotate() = for (c <- cells) c.rotate
- def unmark() = for (c <- cells) c.unmark
-
-
- private var orientation = 0
-
- def nextOrientation() = {
- if (orientation == Piece.orientations) orientation = 0
- if (orientation % Piece.rotations == 0) flip else rotate
- orientation = orientation + 1
- this
- }
-
-
- private def make0() = {
- cells(0).next(Cell.E) = cells(1)
- cells(1).next(Cell.W) = cells(0)
- cells(1).next(Cell.E) = cells(2)
- cells(2).next(Cell.W) = cells(1)
- cells(2).next(Cell.E) = cells(3)
- cells(3).next(Cell.W) = cells(2)
- cells(3).next(Cell.SE) = cells(4)
- cells(4).next(Cell.NW) = cells(3)
- }
-
- private def make1() = {
- cells(0).next(Cell.SE) = cells(1)
- cells(1).next(Cell.NW) = cells(0)
- cells(1).next(Cell.SW) = cells(2)
- cells(2).next(Cell.NE) = cells(1)
- cells(2).next(Cell.W) = cells(3)
- cells(3).next(Cell.E) = cells(2)
- cells(3).next(Cell.SW) = cells(4)
- cells(4).next(Cell.NE) = cells(3)
- }
-
- private def make2() = {
- cells(0).next(Cell.W) = cells(1)
- cells(1).next(Cell.E) = cells(0)
- cells(1).next(Cell.SW) = cells(2)
- cells(2).next(Cell.NE) = cells(1)
- cells(2).next(Cell.SE) = cells(3)
- cells(3).next(Cell.NW) = cells(2)
- cells(3).next(Cell.SE) = cells(4)
- cells(4).next(Cell.NW) = cells(3)
- }
-
- private def make3() = {
- cells(0).next(Cell.SW) = cells(1)
- cells(1).next(Cell.NE) = cells(0)
- cells(1).next(Cell.W) = cells(2)
- cells(2).next(Cell.E) = cells(1)
- cells(1).next(Cell.SW) = cells(3)
- cells(3).next(Cell.NE) = cells(1)
- cells(2).next(Cell.SE) = cells(3)
- cells(3).next(Cell.NW) = cells(2)
- cells(3).next(Cell.SE) = cells(4)
- cells(4).next(Cell.NW) = cells(3)
- }
-
- private def make4() = {
- cells(0).next(Cell.SE) = cells(1)
- cells(1).next(Cell.NW) = cells(0)
- cells(1).next(Cell.SW) = cells(2)
- cells(2).next(Cell.NE) = cells(1)
- cells(1).next(Cell.E) = cells(3)
- cells(3).next(Cell.W) = cells(1)
- cells(3).next(Cell.SE) = cells(4)
- cells(4).next(Cell.NW) = cells(3)
- }
-
- private def make5() = {
- cells(0).next(Cell.SW) = cells(1)
- cells(1).next(Cell.NE) = cells(0)
- cells(0).next(Cell.SE) = cells(2)
- cells(2).next(Cell.NW) = cells(0)
- cells(1).next(Cell.SE) = cells(3)
- cells(3).next(Cell.NW) = cells(1)
- cells(2).next(Cell.SW) = cells(3)
- cells(3).next(Cell.NE) = cells(2)
- cells(3).next(Cell.SW) = cells(4)
- cells(4).next(Cell.NE) = cells(3)
- }
-
- private def make6() = {
- cells(0).next(Cell.SW) = cells(1)
- cells(1).next(Cell.NE) = cells(0)
- cells(2).next(Cell.SE) = cells(1)
- cells(1).next(Cell.NW) = cells(2)
- cells(1).next(Cell.SE) = cells(3)
- cells(3).next(Cell.NW) = cells(1)
- cells(3).next(Cell.SW) = cells(4)
- cells(4).next(Cell.NE) = cells(3)
- }
-
- private def make7() = {
- cells(0).next(Cell.SE) = cells(1)
- cells(1).next(Cell.NW) = cells(0)
- cells(0).next(Cell.SW) = cells(2)
- cells(2).next(Cell.NE) = cells(0)
- cells(2).next(Cell.SW) = cells(3)
- cells(3).next(Cell.NE) = cells(2)
- cells(3).next(Cell.SE) = cells(4)
- cells(4).next(Cell.NW) = cells(3)
- }
-
- private def make8() = {
- cells(0).next(Cell.E) = cells(1)
- cells(1).next(Cell.W) = cells(0)
- cells(1).next(Cell.E) = cells(2)
- cells(2).next(Cell.W) = cells(1)
- cells(2).next(Cell.NE) = cells(3)
- cells(3).next(Cell.SW) = cells(2)
- cells(3).next(Cell.E) = cells(4)
- cells(4).next(Cell.W) = cells(3)
- }
-
- private def make9() = {
- cells(0).next(Cell.E) = cells(1)
- cells(1).next(Cell.W) = cells(0)
- cells(1).next(Cell.E) = cells(2)
- cells(2).next(Cell.W) = cells(1)
- cells(2).next(Cell.NE) = cells(3)
- cells(3).next(Cell.SW) = cells(2)
- cells(2).next(Cell.E) = cells(4)
- cells(4).next(Cell.W) = cells(2)
- cells(4).next(Cell.NW) = cells(3)
- cells(3).next(Cell.SE) = cells(4)
- }
-
-/*
- def print() = {
- Console.println("Piece # " + number)
- Console.println("cell\tNW NE W E SW SE")
- for (i <- Iterator.range(0,Piece.size)){
- Console.print(i + "\t")
- for (j <- Iterator.range(0,Cell.sides)){
- val c = cells(i).next(j)
- if (c == null)
- Console.print("-- ")
- else
- for (k <- Iterator.range(0,Piece.size)){
- if (cells(k) == c) Console.printf(" {0,number,0} ")(k)
- }
- }
- Console.println("")
- }
- Console.println("")
- }
-*/
-
-}
-
-
-
-
-// Cell.scala
-
-object Cell {
- val NW = 0; val NE = 1
- val W = 2; val E = 3
- val SW = 4; val SE = 5
-
- val sides = 6
-}
-
-abstract class Cell {
- implicit def t: ClassTag[T]
- type T
- val next = new Array[T](Cell.sides)
- var marked = false
-
- def mark() = marked = true
- def unmark() = marked = false
-}
-
-// BoardCell.scala
-
-final class BoardCell(_number: Int) extends {
- type T = BoardCell
- implicit val t = classTag[BoardCell]
-} with Cell {
- val number = _number
- var piece: Piece = _
-
- def isEmpty() = piece == null
- def empty() = piece = null
-
- def contiguousEmptyCells(): Int = {
- if (!marked && isEmpty){
- mark
- var count = 1
-
- for (neighbour <- next)
- if (neighbour != null && neighbour.isEmpty)
- count = count + neighbour.contiguousEmptyCells
-
- count } else { 0 }
- }
-}
-
-
-
-
-// PieceCell.scala
-
-final class PieceCell extends Cell {
- type T = PieceCell
-
- def flip = {
- var swap = next(Cell.NE)
- next(Cell.NE) = next(Cell.NW)
- next(Cell.NW) = swap
-
- swap = next(Cell.E)
- next(Cell.E) = next(Cell.W)
- next(Cell.W) = swap
-
- swap = next(Cell.SE)
- next(Cell.SE) = next(Cell.SW)
- next(Cell.SW) = swap
- }
-
- def rotate = {
- var swap = next(Cell.E)
- next(Cell.E) = next(Cell.NE)
- next(Cell.NE) = next(Cell.NW)
- next(Cell.NW) = next(Cell.W)
- next(Cell.W) = next(Cell.SW)
- next(Cell.SW) = next(Cell.SE)
- next(Cell.SE) = swap
- }
-}
-
-
-
diff --git a/test/pending/shootout/meteor.scala-2.scala b/test/pending/shootout/meteor.scala-2.scala
deleted file mode 100644
index 2b42c19260..0000000000
--- a/test/pending/shootout/meteor.scala-2.scala
+++ /dev/null
@@ -1,496 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy
-*/
-
-// This is an un-optimised example implementation
-// classes BoardCell and PieceCell have Array
-
-
-import scala.collection.mutable._
-
-object meteor {
- def main(args: Array[String]) = {
- val solver = new Solver( Integer.parseInt(args(0)) )
- solver.findSolutions
- solver.printSolutions
- }
-}
-
-
-
-
-// Solver.scala
-// import scala.collection.mutable._
-
-final class Solver (n: Int) {
- private var countdown = n
- private var first: String = _
- private var last: String = _
-
- private val board = new Board()
-
- val pieces = Array(
- new Piece(0), new Piece(1), new Piece(2), new Piece(3), new Piece(4),
- new Piece(5), new Piece(6), new Piece(7), new Piece(8), new Piece(9) )
-
- val unplaced = new BitSet(pieces.length)
-
- { unplaced ++= (0 until pieces.length) }
-
-
- def findSolutions(): Unit = {
- if (countdown == 0) return
-
- if (unplaced.size > 0){
- val emptyCellIndex = board.firstEmptyCellIndex
-
- for (k <- Iterator.range(0,pieces.length)){
- if (unplaced.contains(k)){
- unplaced -= k
-
- for (i <- Iterator.range(0,Piece.orientations)){
- val piece = pieces(k).nextOrientation
-
- for (j <- Iterator.range(0,Piece.size)){
- if (board.add(j,emptyCellIndex,piece)) {
-
- if (!shouldPrune) findSolutions
-
- board.remove(piece)
- }
- }
- }
- unplaced += k
- }
- }
- }
- else {
- puzzleSolved
- }
- }
-
- private def puzzleSolved() = {
- val b = board.asString
- if (first == null){
- first = b; last = b
- } else {
- if (b < first){ first = b } else { if (b > last){ last = b } }
- }
- countdown = countdown - 1
- }
-
- private def shouldPrune() = {
- board.unmark
- !board.cells.forall(c => c.contiguousEmptyCells % Piece.size == 0)
- }
-
-
- def printSolutions() = {
-
- def printBoard(s: String) = {
- var indent = false
- var i = 0
- while (i < s.length){
- if (indent) Console.print(' ')
- for (j <- Iterator.range(0,Board.cols)){
- Console.print(s.charAt(i)); Console.print(' ')
- i = i + 1
- }
- Console.print('\n')
- indent = !indent
- }
- Console.print('\n')
- }
-
- Console.print(n + " solutions found\n\n")
- printBoard(first)
- printBoard(last)
- }
-
-/*
- def printPieces() =
- for (i <- Iterator.range(0,Board.pieces)) pieces(i).print
-*/
-
-}
-
-
-
-
-// Board.scala
-// import scala.collection.mutable._
-
-object Board {
- val cols = 5
- val rows = 10
- val size = rows * cols
-}
-
-final class Board {
- val cells = boardCells()
-
- val cellsPieceWillFill = new Array[BoardCell](Piece.size)
- var cellCount = 0
-
- def unmark() = for (c <- cells) c.unmark
-
- def asString() =
- new String( cells map(
- c => if (c.piece == null) '-'.toByte
- else (c.piece.number + 48).toByte ))
-
- def firstEmptyCellIndex() = cells.findIndexOf(c => c.isEmpty)
-
-
- def add(pieceIndex: Int, boardIndex: Int, p: Piece) = {
- cellCount = 0
- p.unmark
-
- find( p.cells(pieceIndex), cells(boardIndex))
-
- val boardHasSpace = cellCount == Piece.size &&
- cellsPieceWillFill.forall(c => c.isEmpty)
-
- if (boardHasSpace) cellsPieceWillFill.foreach(c => c.piece = p)
-
- boardHasSpace
- }
-
- def remove(piece: Piece) = for (c <- cells; if c.piece == piece) c.empty
-
-
- private def find(p: PieceCell, b: BoardCell): Unit = {
- if (p != null && !p.marked && b != null){
- cellsPieceWillFill(cellCount) = b
- cellCount = cellCount + 1
- p.mark
- for (i <- Iterator.range(0,Cell.sides)) find(p.next(i), b.next(i))
- }
- }
-
-
- private def boardCells() = {
- val a = for (i <- Array.range(0,Board.size)) yield new BoardCell(i)
- val m = (Board.size / Board.cols) - 1
-
- for (i <- Iterator.range(0,a.length)){
- val row = i / Board.cols
- val isFirst = i % Board.cols == 0
- val isLast = (i+1) % Board.cols == 0
- val c = a(i)
-
- if (row % 2 == 1) {
- if (!isLast) c.next(Cell.NE) = a(i-(Board.cols-1))
- c.next(Cell.NW) = a(i-Board.cols)
- if (row != m) {
- if (!isLast) c.next(Cell.SE) = a(i+(Board.cols+1))
- c.next(Cell.SW) = a(i+Board.cols)
- }
- } else {
- if (row != 0) {
- if (!isFirst) c.next(Cell.NW) = a(i-(Board.cols+1))
- c.next(Cell.NE) = a(i-Board.cols)
- }
- if (row != m) {
- if (!isFirst) c.next(Cell.SW) = a(i+(Board.cols-1))
- c.next(Cell.SE) = a(i+Board.cols)
- }
- }
- if (!isFirst) c.next(Cell.W) = a(i-1)
- if (!isLast) c.next(Cell.E) = a(i+1)
- }
- a
- }
-
-
-/*
-// Printing all the board cells and their neighbours
-// helps check that they are connected properly
-
- def printBoardCellsAndNeighbours() = {
- Console.println("cell\tNW NE W E SW SE")
- for (i <- Iterator.range(0,Board.size)){
- Console.print(i + "\t")
- for (j <- Iterator.range(0,Cell.sides)){
- val c = cells(i).next(j)
- if (c == null)
- Console.print("-- ")
- else
- Console.printf("{0,number,00} ")(c.number)
- }
- Console.println("")
- }
- Console.println("")
- }
-*/
-
-}
-
-
-
-
-// Piece.scala
-
-object Piece {
- val size = 5
- val rotations = Cell.sides
- val flips = 2
- val orientations = rotations * flips
-}
-
-final class Piece(_number: Int) {
- val number = _number
- val cells = for (i <- Array.range(0,Piece.size)) yield new PieceCell()
-
- {
- number match {
- case 0 => make0
- case 1 => make1
- case 2 => make2
- case 3 => make3
- case 4 => make4
- case 5 => make5
- case 6 => make6
- case 7 => make7
- case 8 => make8
- case 9 => make9
- }
- }
-
- def flip() = for (c <- cells) c.flip
- def rotate() = for (c <- cells) c.rotate
- def unmark() = for (c <- cells) c.unmark
-
-
- private var orientation = 0
-
- def nextOrientation() = {
- if (orientation == Piece.orientations) orientation = 0
- if (orientation % Piece.rotations == 0) flip else rotate
- orientation = orientation + 1
- this
- }
-
-
- private def make0() = {
- cells(0).next(Cell.E) = cells(1)
- cells(1).next(Cell.W) = cells(0)
- cells(1).next(Cell.E) = cells(2)
- cells(2).next(Cell.W) = cells(1)
- cells(2).next(Cell.E) = cells(3)
- cells(3).next(Cell.W) = cells(2)
- cells(3).next(Cell.SE) = cells(4)
- cells(4).next(Cell.NW) = cells(3)
- }
-
- private def make1() = {
- cells(0).next(Cell.SE) = cells(1)
- cells(1).next(Cell.NW) = cells(0)
- cells(1).next(Cell.SW) = cells(2)
- cells(2).next(Cell.NE) = cells(1)
- cells(2).next(Cell.W) = cells(3)
- cells(3).next(Cell.E) = cells(2)
- cells(3).next(Cell.SW) = cells(4)
- cells(4).next(Cell.NE) = cells(3)
- }
-
- private def make2() = {
- cells(0).next(Cell.W) = cells(1)
- cells(1).next(Cell.E) = cells(0)
- cells(1).next(Cell.SW) = cells(2)
- cells(2).next(Cell.NE) = cells(1)
- cells(2).next(Cell.SE) = cells(3)
- cells(3).next(Cell.NW) = cells(2)
- cells(3).next(Cell.SE) = cells(4)
- cells(4).next(Cell.NW) = cells(3)
- }
-
- private def make3() = {
- cells(0).next(Cell.SW) = cells(1)
- cells(1).next(Cell.NE) = cells(0)
- cells(1).next(Cell.W) = cells(2)
- cells(2).next(Cell.E) = cells(1)
- cells(1).next(Cell.SW) = cells(3)
- cells(3).next(Cell.NE) = cells(1)
- cells(2).next(Cell.SE) = cells(3)
- cells(3).next(Cell.NW) = cells(2)
- cells(3).next(Cell.SE) = cells(4)
- cells(4).next(Cell.NW) = cells(3)
- }
-
- private def make4() = {
- cells(0).next(Cell.SE) = cells(1)
- cells(1).next(Cell.NW) = cells(0)
- cells(1).next(Cell.SW) = cells(2)
- cells(2).next(Cell.NE) = cells(1)
- cells(1).next(Cell.E) = cells(3)
- cells(3).next(Cell.W) = cells(1)
- cells(3).next(Cell.SE) = cells(4)
- cells(4).next(Cell.NW) = cells(3)
- }
-
- private def make5() = {
- cells(0).next(Cell.SW) = cells(1)
- cells(1).next(Cell.NE) = cells(0)
- cells(0).next(Cell.SE) = cells(2)
- cells(2).next(Cell.NW) = cells(0)
- cells(1).next(Cell.SE) = cells(3)
- cells(3).next(Cell.NW) = cells(1)
- cells(2).next(Cell.SW) = cells(3)
- cells(3).next(Cell.NE) = cells(2)
- cells(3).next(Cell.SW) = cells(4)
- cells(4).next(Cell.NE) = cells(3)
- }
-
- private def make6() = {
- cells(0).next(Cell.SW) = cells(1)
- cells(1).next(Cell.NE) = cells(0)
- cells(2).next(Cell.SE) = cells(1)
- cells(1).next(Cell.NW) = cells(2)
- cells(1).next(Cell.SE) = cells(3)
- cells(3).next(Cell.NW) = cells(1)
- cells(3).next(Cell.SW) = cells(4)
- cells(4).next(Cell.NE) = cells(3)
- }
-
- private def make7() = {
- cells(0).next(Cell.SE) = cells(1)
- cells(1).next(Cell.NW) = cells(0)
- cells(0).next(Cell.SW) = cells(2)
- cells(2).next(Cell.NE) = cells(0)
- cells(2).next(Cell.SW) = cells(3)
- cells(3).next(Cell.NE) = cells(2)
- cells(3).next(Cell.SE) = cells(4)
- cells(4).next(Cell.NW) = cells(3)
- }
-
- private def make8() = {
- cells(0).next(Cell.E) = cells(1)
- cells(1).next(Cell.W) = cells(0)
- cells(1).next(Cell.E) = cells(2)
- cells(2).next(Cell.W) = cells(1)
- cells(2).next(Cell.NE) = cells(3)
- cells(3).next(Cell.SW) = cells(2)
- cells(3).next(Cell.E) = cells(4)
- cells(4).next(Cell.W) = cells(3)
- }
-
- private def make9() = {
- cells(0).next(Cell.E) = cells(1)
- cells(1).next(Cell.W) = cells(0)
- cells(1).next(Cell.E) = cells(2)
- cells(2).next(Cell.W) = cells(1)
- cells(2).next(Cell.NE) = cells(3)
- cells(3).next(Cell.SW) = cells(2)
- cells(2).next(Cell.E) = cells(4)
- cells(4).next(Cell.W) = cells(2)
- cells(4).next(Cell.NW) = cells(3)
- cells(3).next(Cell.SE) = cells(4)
- }
-
-/*
- def print() = {
- Console.println("Piece # " + number)
- Console.println("cell\tNW NE W E SW SE")
- for (i <- Iterator.range(0,Piece.size)){
- Console.print(i + "\t")
- for (j <- Iterator.range(0,Cell.sides)){
- val c = cells(i).next(j)
- if (c == null)
- Console.print("-- ")
- else
- for (k <- Iterator.range(0,Piece.size)){
- if (cells(k) == c) Console.printf(" {0,number,0} ")(k)
- }
- }
- Console.println("")
- }
- Console.println("")
- }
-*/
-
-}
-
-
-
-
-// Cell.scala
-
-object Cell {
- val NW = 0; val NE = 1
- val W = 2; val E = 3
- val SW = 4; val SE = 5
-
- val sides = 6
-}
-
-abstract class Cell {
- var marked = false
-
- def mark() = marked = true
- def unmark() = marked = false
-}
-
-
-
-
-// BoardCell.scala
-
-final class BoardCell(_number: Int) extends Cell {
- val next = new Array[BoardCell](Cell.sides)
- val number = _number
- var piece: Piece = _
-
- def isEmpty() = piece == null
- def empty() = piece = null
-
- def contiguousEmptyCells(): Int = {
- if (!marked && isEmpty){
- mark
- var count = 1
-
- for (neighbour <- next)
- if (neighbour != null && neighbour.isEmpty)
- count = count + neighbour.contiguousEmptyCells
-
- count } else { 0 }
- }
-}
-
-
-
-
-// PieceCell.scala
-
-final class PieceCell extends Cell {
- val next = new Array[PieceCell](Cell.sides)
-
- def flip = {
- var swap = next(Cell.NE)
- next(Cell.NE) = next(Cell.NW)
- next(Cell.NW) = swap
-
- swap = next(Cell.E)
- next(Cell.E) = next(Cell.W)
- next(Cell.W) = swap
-
- swap = next(Cell.SE)
- next(Cell.SE) = next(Cell.SW)
- next(Cell.SW) = swap
- }
-
- def rotate = {
- var swap = next(Cell.E)
- next(Cell.E) = next(Cell.NE)
- next(Cell.NE) = next(Cell.NW)
- next(Cell.NW) = next(Cell.W)
- next(Cell.W) = next(Cell.SW)
- next(Cell.SW) = next(Cell.SE)
- next(Cell.SE) = swap
- }
-}
-
-
-
-
diff --git a/test/pending/shootout/meteor.scala-2.scala.runner b/test/pending/shootout/meteor.scala-2.scala.runner
deleted file mode 100644
index dae384311f..0000000000
--- a/test/pending/shootout/meteor.scala-2.scala.runner
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends Application {
- for(n <- List(0)) meteor.main(Array(n.toString))
-}
diff --git a/test/pending/shootout/meteor.scala-3.scala b/test/pending/shootout/meteor.scala-3.scala
deleted file mode 100644
index 01dacf90c6..0000000000
--- a/test/pending/shootout/meteor.scala-3.scala
+++ /dev/null
@@ -1,557 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy
-*/
-
-// Most for-comprehension replaced by while loops
-
-
-
-import scala.collection.mutable._
-
-object meteor {
- def main(args: Array[String]) = {
- val solver = new Solver( Integer.parseInt(args(0)) )
- solver.findSolutions
- solver.printSolutions
- }
-}
-
-
-
-
-// Solver.scala
-// import scala.collection.mutable._
-
-final class Solver (n: Int) {
- private var countdown = n
- private var first: String = _
- private var last: String = _
-
- private val board = new Board()
-
- val pieces = Array(
- new Piece(0), new Piece(1), new Piece(2), new Piece(3), new Piece(4),
- new Piece(5), new Piece(6), new Piece(7), new Piece(8), new Piece(9) )
-
- val unplaced = new BitSet(pieces.length)
-
- { unplaced ++= (0 until pieces.length) }
-
-
- def findSolutions(): Unit = {
- if (countdown == 0) return
-
- if (unplaced.size > 0){
- val emptyCellIndex = board.firstEmptyCellIndex
-
- var k = 0
- while (k < pieces.length){
- if (unplaced.contains(k)){
- unplaced -= k
-
- var i = 0
- while (i < Piece.orientations){
- val piece = pieces(k).nextOrientation
-
- var j = 0
- while (j < Piece.size){
- if (board.add(j,emptyCellIndex,piece)) {
-
- if (!shouldPrune) findSolutions
-
- board.remove(piece)
- }
- j = j + 1
- }
- i = i + 1
- }
- unplaced += k
- }
- k = k + 1
- }
- }
- else {
- puzzleSolved
- }
- }
-
- private def puzzleSolved() = {
- val b = board.asString
- if (first == null){
- first = b; last = b
- } else {
- if (b < first){ first = b } else { if (b > last){ last = b } }
- }
- countdown = countdown - 1
- }
-
- private def shouldPrune(): Boolean = {
- board.unmark
- var i = 0
- while (i < board.cells.length){
- if (board.cells(i).contiguousEmptyCells % Piece.size != 0) return true
- i = i + 1
- }
- false
- }
-
-
- def printSolutions() = {
-
- def printBoard(s: String) = {
- var indent = false
- var i = 0
- while (i < s.length){
- if (indent) Console.print(' ')
- var j = 0
- while (j < Board.cols){
- Console.print(s.charAt(i)); Console.print(' ')
- j = j + 1
- i = i + 1
- }
- Console.print('\n')
- indent = !indent
- }
- Console.print('\n')
- }
-
- Console.print(n + " solutions found\n\n")
- printBoard(first)
- printBoard(last)
- }
-
-/*
- def printPieces() =
- for (i <- Iterator.range(0,Board.pieces)) pieces(i).print
-*/
-
-}
-
-
-
-
-
-// Board.scala
-// import scala.collection.mutable._
-
-object Board {
- val cols = 5
- val rows = 10
- val size = rows * cols
-}
-
-final class Board {
- val cells = boardCells()
-
- val cellsPieceWillFill = new Array[BoardCell](Piece.size)
- var cellCount = 0
-
- def unmark() = {
- var i = 0
- while (i < cells.length){
- cells(i).unmark
- i = i + 1
- }
- }
-
- def asString() =
- new String( cells map(
- c => if (c.piece == null) '-'.toByte
- else (c.piece.number + 48).toByte ))
-
- def firstEmptyCellIndex() = cells.findIndexOf(c => c.isEmpty)
-
-
- def add(pieceIndex: Int, boardIndex: Int, p: Piece): Boolean = {
- cellCount = 0
- p.unmark
-
- find(p.cells(pieceIndex), cells(boardIndex))
-
- if (cellCount != Piece.size) return false
-
- var i = 0
- while (i < cellCount){
- if (!cellsPieceWillFill(i).isEmpty) return false
- i = i + 1
- }
-
- i = 0
- while (i < cellCount){
- cellsPieceWillFill(i).piece = p
- i = i + 1
- }
-
- true
- }
-
- def remove(piece: Piece) = {
- var i = 0
- while (i < cells.length){
- if (cells(i).piece == piece) cells(i).empty
- i = i + 1
- }
- }
-
- private def find(p: PieceCell, b: BoardCell): Unit = {
- if (p != null && !p.marked && b != null){
- cellsPieceWillFill(cellCount) = b
- cellCount = cellCount + 1
- p.mark
-
- var i = 0
- while (i < Cell.sides){
- find(p.next(i), b.next(i))
- i = i + 1
- }
- }
- }
-
-
- private def boardCells() = {
- val a = for (i <- Array.range(0,Board.size)) yield new BoardCell(i)
- val m = (Board.size / Board.cols) - 1
-
- for (i <- Iterator.range(0,a.length)){
- val row = i / Board.cols
- val isFirst = i % Board.cols == 0
- val isLast = (i+1) % Board.cols == 0
- val c = a(i)
-
- if (row % 2 == 1) {
- if (!isLast) c.next(Cell.NE) = a(i-(Board.cols-1))
- c.next(Cell.NW) = a(i-Board.cols)
- if (row != m) {
- if (!isLast) c.next(Cell.SE) = a(i+(Board.cols+1))
- c.next(Cell.SW) = a(i+Board.cols)
- }
- } else {
- if (row != 0) {
- if (!isFirst) c.next(Cell.NW) = a(i-(Board.cols+1))
- c.next(Cell.NE) = a(i-Board.cols)
- }
- if (row != m) {
- if (!isFirst) c.next(Cell.SW) = a(i+(Board.cols-1))
- c.next(Cell.SE) = a(i+Board.cols)
- }
- }
- if (!isFirst) c.next(Cell.W) = a(i-1)
- if (!isLast) c.next(Cell.E) = a(i+1)
- }
- a
- }
-
-/*
-// Printing all the board cells and their neighbours
-// helps check that they are connected properly
-
- def printBoardCellsAndNeighbours() = {
- Console.println("cell\tNW NE W E SW SE")
- for (i <- Iterator.range(0,Board.size)){
- Console.print(i + "\t")
- for (j <- Iterator.range(0,Cell.sides)){
- val c = cells(i).next(j)
- if (c == null)
- Console.print("-- ")
- else
- Console.printf("{0,number,00} ")(c.number)
- }
- Console.println("")
- }
- Console.println("")
- }
-*/
-
-}
-
-
-
-
-// Piece.scala
-
-object Piece {
- val size = 5
- val rotations = Cell.sides
- val flips = 2
- val orientations = rotations * flips
-}
-
-final class Piece(_number: Int) {
- val number = _number
- val cells = for (i <- Array.range(0,Piece.size)) yield new PieceCell()
-
- {
- number match {
- case 0 => make0
- case 1 => make1
- case 2 => make2
- case 3 => make3
- case 4 => make4
- case 5 => make5
- case 6 => make6
- case 7 => make7
- case 8 => make8
- case 9 => make9
- }
- }
-
- def flip() = {
- var i = 0
- while (i < cells.length){
- cells(i).flip
- i = i + 1
- }
- }
-
- def rotate() = {
- var i = 0
- while (i < cells.length){
- cells(i).rotate
- i = i + 1
- }
- }
-
- def unmark() = {
- var i = 0
- while (i < cells.length){
- cells(i).unmark
- i = i + 1
- }
- }
-
-
- private var orientation = 0
-
- def nextOrientation() = {
- if (orientation == Piece.orientations) orientation = 0
- if (orientation % Piece.rotations == 0) flip else rotate
- orientation = orientation + 1
- this
- }
-
-
- private def make0() = {
- cells(0).next(Cell.E) = cells(1)
- cells(1).next(Cell.W) = cells(0)
- cells(1).next(Cell.E) = cells(2)
- cells(2).next(Cell.W) = cells(1)
- cells(2).next(Cell.E) = cells(3)
- cells(3).next(Cell.W) = cells(2)
- cells(3).next(Cell.SE) = cells(4)
- cells(4).next(Cell.NW) = cells(3)
- }
-
- private def make1() = {
- cells(0).next(Cell.SE) = cells(1)
- cells(1).next(Cell.NW) = cells(0)
- cells(1).next(Cell.SW) = cells(2)
- cells(2).next(Cell.NE) = cells(1)
- cells(2).next(Cell.W) = cells(3)
- cells(3).next(Cell.E) = cells(2)
- cells(3).next(Cell.SW) = cells(4)
- cells(4).next(Cell.NE) = cells(3)
- }
-
- private def make2() = {
- cells(0).next(Cell.W) = cells(1)
- cells(1).next(Cell.E) = cells(0)
- cells(1).next(Cell.SW) = cells(2)
- cells(2).next(Cell.NE) = cells(1)
- cells(2).next(Cell.SE) = cells(3)
- cells(3).next(Cell.NW) = cells(2)
- cells(3).next(Cell.SE) = cells(4)
- cells(4).next(Cell.NW) = cells(3)
- }
-
- private def make3() = {
- cells(0).next(Cell.SW) = cells(1)
- cells(1).next(Cell.NE) = cells(0)
- cells(1).next(Cell.W) = cells(2)
- cells(2).next(Cell.E) = cells(1)
- cells(1).next(Cell.SW) = cells(3)
- cells(3).next(Cell.NE) = cells(1)
- cells(2).next(Cell.SE) = cells(3)
- cells(3).next(Cell.NW) = cells(2)
- cells(3).next(Cell.SE) = cells(4)
- cells(4).next(Cell.NW) = cells(3)
- }
-
- private def make4() = {
- cells(0).next(Cell.SE) = cells(1)
- cells(1).next(Cell.NW) = cells(0)
- cells(1).next(Cell.SW) = cells(2)
- cells(2).next(Cell.NE) = cells(1)
- cells(1).next(Cell.E) = cells(3)
- cells(3).next(Cell.W) = cells(1)
- cells(3).next(Cell.SE) = cells(4)
- cells(4).next(Cell.NW) = cells(3)
- }
-
- private def make5() = {
- cells(0).next(Cell.SW) = cells(1)
- cells(1).next(Cell.NE) = cells(0)
- cells(0).next(Cell.SE) = cells(2)
- cells(2).next(Cell.NW) = cells(0)
- cells(1).next(Cell.SE) = cells(3)
- cells(3).next(Cell.NW) = cells(1)
- cells(2).next(Cell.SW) = cells(3)
- cells(3).next(Cell.NE) = cells(2)
- cells(3).next(Cell.SW) = cells(4)
- cells(4).next(Cell.NE) = cells(3)
- }
-
- private def make6() = {
- cells(0).next(Cell.SW) = cells(1)
- cells(1).next(Cell.NE) = cells(0)
- cells(2).next(Cell.SE) = cells(1)
- cells(1).next(Cell.NW) = cells(2)
- cells(1).next(Cell.SE) = cells(3)
- cells(3).next(Cell.NW) = cells(1)
- cells(3).next(Cell.SW) = cells(4)
- cells(4).next(Cell.NE) = cells(3)
- }
-
- private def make7() = {
- cells(0).next(Cell.SE) = cells(1)
- cells(1).next(Cell.NW) = cells(0)
- cells(0).next(Cell.SW) = cells(2)
- cells(2).next(Cell.NE) = cells(0)
- cells(2).next(Cell.SW) = cells(3)
- cells(3).next(Cell.NE) = cells(2)
- cells(3).next(Cell.SE) = cells(4)
- cells(4).next(Cell.NW) = cells(3)
- }
-
- private def make8() = {
- cells(0).next(Cell.E) = cells(1)
- cells(1).next(Cell.W) = cells(0)
- cells(1).next(Cell.E) = cells(2)
- cells(2).next(Cell.W) = cells(1)
- cells(2).next(Cell.NE) = cells(3)
- cells(3).next(Cell.SW) = cells(2)
- cells(3).next(Cell.E) = cells(4)
- cells(4).next(Cell.W) = cells(3)
- }
-
- private def make9() = {
- cells(0).next(Cell.E) = cells(1)
- cells(1).next(Cell.W) = cells(0)
- cells(1).next(Cell.E) = cells(2)
- cells(2).next(Cell.W) = cells(1)
- cells(2).next(Cell.NE) = cells(3)
- cells(3).next(Cell.SW) = cells(2)
- cells(2).next(Cell.E) = cells(4)
- cells(4).next(Cell.W) = cells(2)
- cells(4).next(Cell.NW) = cells(3)
- cells(3).next(Cell.SE) = cells(4)
- }
-
-/*
- def print() = {
- Console.println("Piece # " + number)
- Console.println("cell\tNW NE W E SW SE")
- for (i <- Iterator.range(0,Piece.size)){
- Console.print(i + "\t")
- for (j <- Iterator.range(0,Cell.sides)){
- val c = cells(i).next(j)
- if (c == null)
- Console.print("-- ")
- else
- for (k <- Iterator.range(0,Piece.size)){
- if (cells(k) == c) Console.printf(" {0,number,0} ")(k)
- }
- }
- Console.println("")
- }
- Console.println("")
- }
-*/
-
-}
-
-
-
-
-// Cell.scala
-
-object Cell {
- val NW = 0; val NE = 1
- val W = 2; val E = 3
- val SW = 4; val SE = 5
-
- val sides = 6
-}
-
-abstract class Cell {
- var marked = false
-
- def mark() = marked = true
- def unmark() = marked = false
-}
-
-
-
-
-// BoardCell.scala
-
-final class BoardCell(_number: Int) extends Cell {
- val next = new Array[BoardCell](Cell.sides)
- val number = _number
- var piece: Piece = _
-
- def isEmpty() = piece == null
- def empty() = piece = null
-
- def contiguousEmptyCells(): Int = {
- if (!marked && isEmpty){
- mark
- var count = 1
-
- var i = 0
- while (i < next.length){
- if (next(i) != null && next(i).isEmpty)
- count = count + next(i).contiguousEmptyCells
- i = i + 1
- }
-
- count } else { 0 }
- }
-}
-
-
-
-
-// PieceCell.scala
-
-final class PieceCell extends Cell {
- val next = new Array[PieceCell](Cell.sides)
-
- def flip = {
- var swap = next(Cell.NE)
- next(Cell.NE) = next(Cell.NW)
- next(Cell.NW) = swap
-
- swap = next(Cell.E)
- next(Cell.E) = next(Cell.W)
- next(Cell.W) = swap
-
- swap = next(Cell.SE)
- next(Cell.SE) = next(Cell.SW)
- next(Cell.SW) = swap
- }
-
- def rotate = {
- var swap = next(Cell.E)
- next(Cell.E) = next(Cell.NE)
- next(Cell.NE) = next(Cell.NW)
- next(Cell.NW) = next(Cell.W)
- next(Cell.W) = next(Cell.SW)
- next(Cell.SW) = next(Cell.SE)
- next(Cell.SE) = swap
- }
-}
-
-
-
-
diff --git a/test/pending/shootout/meteor.scala-3.scala.runner b/test/pending/shootout/meteor.scala-3.scala.runner
deleted file mode 100644
index dae384311f..0000000000
--- a/test/pending/shootout/meteor.scala-3.scala.runner
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends Application {
- for(n <- List(0)) meteor.main(Array(n.toString))
-}
diff --git a/test/pending/shootout/meteor.scala-4.scala b/test/pending/shootout/meteor.scala-4.scala
deleted file mode 100644
index ee036f7fab..0000000000
--- a/test/pending/shootout/meteor.scala-4.scala
+++ /dev/null
@@ -1,587 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy
-*/
-
-// Most for-comprehension replaced by while loops
-// BoardCells occupied by each Piece orientation are cached
-// Piece orientations are cached
-
-import scala.collection.mutable._
-
-object meteor {
- def main(args: Array[String]) = {
- val solver = new Solver( Integer.parseInt(args(0)) )
- solver.findSolutions
- solver.printSolutions
- }
-}
-
-
-
-
-// Solver.scala
-// import scala.collection.mutable._
-
-final class Solver (n: Int) {
- private var countdown = n
- private var first: String = _
- private var last: String = _
-
- private val board = new Board()
-
- val pieces = Array(
- new Piece(0), new Piece(1), new Piece(2), new Piece(3), new Piece(4),
- new Piece(5), new Piece(6), new Piece(7), new Piece(8), new Piece(9) )
-
- val unplaced = new BitSet(pieces.length)
-
- { unplaced ++= (0 until pieces.length) }
-
-
- def findSolutions(): Unit = {
- if (countdown == 0) return
-
- if (unplaced.size > 0){
- val emptyCellIndex = board.firstEmptyCellIndex
-
- var k = 0
- while (k < pieces.length){
- if (unplaced.contains(k)){
- unplaced -= k
-
- var i = 0
- while (i < Piece.orientations){
- val piece = pieces(k).nextOrientation
-
- var j = 0
- while (j < Piece.size){
- if (board.add(j,emptyCellIndex,piece)) {
-
- if (!shouldPrune) findSolutions
-
- board.remove(piece)
- }
- j = j + 1
- }
- i = i + 1
- }
- unplaced += k
- }
- k = k + 1
- }
- }
- else {
- puzzleSolved
- }
- }
-
- private def puzzleSolved() = {
- val b = board.asString
- if (first == null){
- first = b; last = b
- } else {
- if (b < first){ first = b } else { if (b > last){ last = b } }
- }
- countdown = countdown - 1
- }
-
- private def shouldPrune(): Boolean = {
- board.unmark
- var i = 0
- while (i < board.cells.length){
- if (board.cells(i).contiguousEmptyCells % Piece.size != 0) return true
- i = i + 1
- }
- false
- }
-
-
- def printSolutions() = {
-
- def printBoard(s: String) = {
- var indent = false
- var i = 0
- while (i < s.length){
- if (indent) Console.print(' ')
- var j = 0
- while (j < Board.cols){
- Console.print(s.charAt(i)); Console.print(' ')
- j = j + 1
- i = i + 1
- }
- Console.print('\n')
- indent = !indent
- }
- Console.print('\n')
- }
-
- Console.print(n + " solutions found\n\n")
- printBoard(first)
- printBoard(last)
- }
-
-/*
- def printPieces() =
- for (i <- Iterator.range(0,Board.pieces)) pieces(i).print
-*/
-
-}
-
-
-
-// Board.scala
-// import scala.collection.mutable._
-
-object Board {
- val cols = 5
- val rows = 10
- val size = rows * cols
- val pieces = 10
- val noFit = new Array[BoardCell](0)
-}
-
-final class Board {
- val cells = boardCells()
-
- val cellsPieceWillFill = new Array[BoardCell](Piece.size)
- var cellCount = 0
-
- def unmark() = {
- var i = 0
- while (i < cells.length){
- cells(i).unmark
- i = i + 1
- }
- }
-
- def asString() =
- new String( cells map(
- c => if (c.piece == null) '-'.toByte
- else (c.piece.number + 48).toByte ))
-
- def firstEmptyCellIndex() = cells.findIndexOf(c => c.isEmpty)
-
-
- private val cache: Array[Array[Array[Array[ Array[BoardCell] ]]]] =
- for (i <- Array.range(0,Board.pieces))
- yield
- for (j <- Array.range(0,Piece.orientations))
- yield
- for (k <- Array.range(0,Piece.size)) // piece cell index
- yield
- for (m <- Array.range(0,Board.size)) // board cell index
- yield (null: BoardCell)
-
-
- def add(pieceIndex: Int, boardIndex: Int, p: Piece): Boolean = {
- var a = cache(p.number)(p.orientation)(pieceIndex)(boardIndex)
-
- cellCount = 0
- p.unmark
-
- if (a == null){
- find(p.cells(pieceIndex), cells(boardIndex))
-
- if (cellCount != Piece.size){
- cache(p.number)(p.orientation)(pieceIndex)(boardIndex) = Board.noFit
- return false
- }
-
- a = cellsPieceWillFill .filter(c => true)
- cache(p.number)(p.orientation)(pieceIndex)(boardIndex) = a
- }
- else {
- if (a == Board.noFit) return false
- }
-
- var i = 0
- while (i < a.length){
- if (!a(i).isEmpty) return false
- i = i + 1
- }
-
- i = 0
- while (i < a.length){
- a(i).piece = p
- i = i + 1
- }
-
- true
- }
-
-
- def remove(piece: Piece) = {
- var i = 0
- while (i < cells.length){
- if (cells(i).piece == piece) cells(i).empty
- i = i + 1
- }
- }
-
-
- private def find(p: PieceCell, b: BoardCell): Unit = {
- if (p != null && !p.marked && b != null){
- cellsPieceWillFill(cellCount) = b
- cellCount = cellCount + 1
- p.mark
-
- var i = 0
- while (i < Cell.sides){
- find(p.next(i), b.next(i))
- i = i + 1
- }
- }
- }
-
-
- private def boardCells() = {
- val a = for (i <- Array.range(0,Board.size)) yield new BoardCell(i)
- val m = (Board.size / Board.cols) - 1
-
- for (i <- Iterator.range(0,a.length)){
- val row = i / Board.cols
- val isFirst = i % Board.cols == 0
- val isLast = (i+1) % Board.cols == 0
- val c = a(i)
-
- if (row % 2 == 1) {
- if (!isLast) c.next(Cell.NE) = a(i-(Board.cols-1))
- c.next(Cell.NW) = a(i-Board.cols)
- if (row != m) {
- if (!isLast) c.next(Cell.SE) = a(i+(Board.cols+1))
- c.next(Cell.SW) = a(i+Board.cols)
- }
- } else {
- if (row != 0) {
- if (!isFirst) c.next(Cell.NW) = a(i-(Board.cols+1))
- c.next(Cell.NE) = a(i-Board.cols)
- }
- if (row != m) {
- if (!isFirst) c.next(Cell.SW) = a(i+(Board.cols-1))
- c.next(Cell.SE) = a(i+Board.cols)
- }
- }
- if (!isFirst) c.next(Cell.W) = a(i-1)
- if (!isLast) c.next(Cell.E) = a(i+1)
- }
- a
- }
-
-
-/*
-// Printing all the board cells and their neighbours
-// helps check that they are connected properly
-
- def printBoardCellsAndNeighbours() = {
- Console.println("cell\tNW NE W E SW SE")
- for (i <- Iterator.range(0,Board.size)){
- Console.print(i + "\t")
- for (j <- Iterator.range(0,Cell.sides)){
- val c = cells(i).next(j)
- if (c == null)
- Console.print("-- ")
- else
- Console.printf("{0,number,00} ")(c.number)
- }
- Console.println("")
- }
- Console.println("")
- }
-*/
-
-}
-
-
-
-
-// Piece.scala
-
-object Piece {
- val size = 5
- val rotations = Cell.sides
- val flips = 2
- val orientations = rotations * flips
-}
-
-final class Piece(_number: Int) {
- val number = _number
-
- def unmark() = {
- val c = cache(orientation)
- var i = 0
- while (i < c.length){
- c(i).unmark
- i = i + 1
- }
- }
-
- def cells = cache(orientation)
-
- private val cache =
- for (i <- Array.range(0,Piece.orientations))
- yield pieceOrientation(i)
-
- var orientation = 0
-
- def nextOrientation() = {
- orientation = (orientation + 1) % Piece.orientations
- this
- }
-
-
- private def pieceOrientation(k: Int) = {
- val cells = for (i <- Array.range(0,Piece.size)) yield new PieceCell()
- makePiece(number,cells)
-
- var i = 0
- while (i < k){
- if (i % Piece.rotations == 0)
- for (c <- cells) c.flip
- else
- for (c <- cells) c.rotate
-
- i = i + 1
- }
- cells
- }
-
- private def makePiece(number: Int, cells: Array[PieceCell]) = {
- number match {
- case 0 => make0(cells)
- case 1 => make1(cells)
- case 2 => make2(cells)
- case 3 => make3(cells)
- case 4 => make4(cells)
- case 5 => make5(cells)
- case 6 => make6(cells)
- case 7 => make7(cells)
- case 8 => make8(cells)
- case 9 => make9(cells)
- }
- }
-
- private def make0(a: Array[PieceCell]) = {
- a(0).next(Cell.E) = a(1)
- a(1).next(Cell.W) = a(0)
- a(1).next(Cell.E) = a(2)
- a(2).next(Cell.W) = a(1)
- a(2).next(Cell.E) = a(3)
- a(3).next(Cell.W) = a(2)
- a(3).next(Cell.SE) = a(4)
- a(4).next(Cell.NW) = a(3)
- }
-
- private def make1(a: Array[PieceCell]) = {
- a(0).next(Cell.SE) = a(1)
- a(1).next(Cell.NW) = a(0)
- a(1).next(Cell.SW) = a(2)
- a(2).next(Cell.NE) = a(1)
- a(2).next(Cell.W) = a(3)
- a(3).next(Cell.E) = a(2)
- a(3).next(Cell.SW) = a(4)
- a(4).next(Cell.NE) = a(3)
- }
-
- private def make2(a: Array[PieceCell]) = {
- a(0).next(Cell.W) = a(1)
- a(1).next(Cell.E) = a(0)
- a(1).next(Cell.SW) = a(2)
- a(2).next(Cell.NE) = a(1)
- a(2).next(Cell.SE) = a(3)
- a(3).next(Cell.NW) = a(2)
- a(3).next(Cell.SE) = a(4)
- a(4).next(Cell.NW) = a(3)
- }
-
- private def make3(a: Array[PieceCell]) = {
- a(0).next(Cell.SW) = a(1)
- a(1).next(Cell.NE) = a(0)
- a(1).next(Cell.W) = a(2)
- a(2).next(Cell.E) = a(1)
- a(1).next(Cell.SW) = a(3)
- a(3).next(Cell.NE) = a(1)
- a(2).next(Cell.SE) = a(3)
- a(3).next(Cell.NW) = a(2)
- a(3).next(Cell.SE) = a(4)
- a(4).next(Cell.NW) = a(3)
- }
-
- private def make4(a: Array[PieceCell]) = {
- a(0).next(Cell.SE) = a(1)
- a(1).next(Cell.NW) = a(0)
- a(1).next(Cell.SW) = a(2)
- a(2).next(Cell.NE) = a(1)
- a(1).next(Cell.E) = a(3)
- a(3).next(Cell.W) = a(1)
- a(3).next(Cell.SE) = a(4)
- a(4).next(Cell.NW) = a(3)
- }
-
- private def make5(a: Array[PieceCell]) = {
- a(0).next(Cell.SW) = a(1)
- a(1).next(Cell.NE) = a(0)
- a(0).next(Cell.SE) = a(2)
- a(2).next(Cell.NW) = a(0)
- a(1).next(Cell.SE) = a(3)
- a(3).next(Cell.NW) = a(1)
- a(2).next(Cell.SW) = a(3)
- a(3).next(Cell.NE) = a(2)
- a(3).next(Cell.SW) = a(4)
- a(4).next(Cell.NE) = a(3)
- }
-
- private def make6(a: Array[PieceCell]) = {
- a(0).next(Cell.SW) = a(1)
- a(1).next(Cell.NE) = a(0)
- a(2).next(Cell.SE) = a(1)
- a(1).next(Cell.NW) = a(2)
- a(1).next(Cell.SE) = a(3)
- a(3).next(Cell.NW) = a(1)
- a(3).next(Cell.SW) = a(4)
- a(4).next(Cell.NE) = a(3)
- }
-
- private def make7(a: Array[PieceCell]) = {
- a(0).next(Cell.SE) = a(1)
- a(1).next(Cell.NW) = a(0)
- a(0).next(Cell.SW) = a(2)
- a(2).next(Cell.NE) = a(0)
- a(2).next(Cell.SW) = a(3)
- a(3).next(Cell.NE) = a(2)
- a(3).next(Cell.SE) = a(4)
- a(4).next(Cell.NW) = a(3)
- }
-
- private def make8(a: Array[PieceCell]) = {
- a(0).next(Cell.E) = a(1)
- a(1).next(Cell.W) = a(0)
- a(1).next(Cell.E) = a(2)
- a(2).next(Cell.W) = a(1)
- a(2).next(Cell.NE) = a(3)
- a(3).next(Cell.SW) = a(2)
- a(3).next(Cell.E) = a(4)
- a(4).next(Cell.W) = a(3)
- }
-
- private def make9(a: Array[PieceCell]) = {
- a(0).next(Cell.E) = a(1)
- a(1).next(Cell.W) = a(0)
- a(1).next(Cell.E) = a(2)
- a(2).next(Cell.W) = a(1)
- a(2).next(Cell.NE) = a(3)
- a(3).next(Cell.SW) = a(2)
- a(2).next(Cell.E) = a(4)
- a(4).next(Cell.W) = a(2)
- a(4).next(Cell.NW) = a(3)
- a(3).next(Cell.SE) = a(4)
- }
-
-/*
- def print() = {
- Console.println("Piece # " + number)
- Console.println("cell\tNW NE W E SW SE")
- for (i <- Iterator.range(0,Piece.size)){
- Console.print(i + "\t")
- for (j <- Iterator.range(0,Cell.sides)){
- val c = cells(i).next(j)
- if (c == null)
- Console.print("-- ")
- else
- for (k <- Iterator.range(0,Piece.size)){
- if (cells(k) == c) Console.printf(" {0,number,0} ")(k)
- }
- }
- Console.println("")
- }
- Console.println("")
- }
-*/
-}
-
-
-
-
-
-// Cell.scala
-
-object Cell {
- val NW = 0; val NE = 1
- val W = 2; val E = 3
- val SW = 4; val SE = 5
-
- val sides = 6
-}
-
-abstract class Cell {
- var marked = false
-
- def mark() = marked = true
- def unmark() = marked = false
-}
-
-
-
-
-// BoardCell.scala
-
-final class BoardCell(_number: Int) extends Cell {
- val next = new Array[BoardCell](Cell.sides)
- val number = _number
- var piece: Piece = _
-
- def isEmpty() = piece == null
- def empty() = piece = null
-
- def contiguousEmptyCells(): Int = {
- if (!marked && isEmpty){
- mark
- var count = 1
-
- var i = 0
- while (i < next.length){
- if (next(i) != null && next(i).isEmpty)
- count = count + next(i).contiguousEmptyCells
- i = i + 1
- }
-
- count } else { 0 }
- }
-}
-
-
-
-
-// PieceCell.scala
-
-final class PieceCell extends Cell {
- val next = new Array[PieceCell](Cell.sides)
-
- def flip = {
- var swap = next(Cell.NE)
- next(Cell.NE) = next(Cell.NW)
- next(Cell.NW) = swap
-
- swap = next(Cell.E)
- next(Cell.E) = next(Cell.W)
- next(Cell.W) = swap
-
- swap = next(Cell.SE)
- next(Cell.SE) = next(Cell.SW)
- next(Cell.SW) = swap
- }
-
- def rotate = {
- var swap = next(Cell.E)
- next(Cell.E) = next(Cell.NE)
- next(Cell.NE) = next(Cell.NW)
- next(Cell.NW) = next(Cell.W)
- next(Cell.W) = next(Cell.SW)
- next(Cell.SW) = next(Cell.SE)
- next(Cell.SE) = swap
- }
-}
-
-
-
-
diff --git a/test/pending/shootout/meteor.scala-4.scala.runner b/test/pending/shootout/meteor.scala-4.scala.runner
deleted file mode 100644
index dae384311f..0000000000
--- a/test/pending/shootout/meteor.scala-4.scala.runner
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends Application {
- for(n <- List(0)) meteor.main(Array(n.toString))
-}
diff --git a/test/pending/shootout/meteor.scala.runner b/test/pending/shootout/meteor.scala.runner
deleted file mode 100644
index dae384311f..0000000000
--- a/test/pending/shootout/meteor.scala.runner
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends Application {
- for(n <- List(0)) meteor.main(Array(n.toString))
-}
diff --git a/test/pending/shootout/methcall.scala b/test/pending/shootout/methcall.scala
deleted file mode 100644
index 9f7234c72d..0000000000
--- a/test/pending/shootout/methcall.scala
+++ /dev/null
@@ -1,58 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy (Scala novice)
-*/
-
-object methcall {
- def main(args: Array[String]) = {
- var n = toPositiveInt(args);
- var v: Boolean = false
-
- val toggle = new Toggle(true);
- for (i <- Iterator.range(1,n)) v = toggle.activate.value;
-
- Console println( toggle.activate.value );
-
- val ntoggle = new NToggle(true,3);
- for (i <- Iterator.range(1,n)) v = ntoggle.activate.value;
-
- Console println( ntoggle.activate.value );
- }
-
-
- private def toPositiveInt(s: Array[String]) = {
- val i =
- try { Integer.parseInt(s(0)); }
- catch { case _ => 1 }
- if (i>0) i; else 1;
- }
-}
-
-
-private class Toggle(b: Boolean) {
- var state = b;
-
- def value = state;
-
- def activate = {
- state = !state;
- this
- }
-}
-
-
-private class NToggle(b: Boolean, trigger: Int)
-extends Toggle(b) {
-
- val toggleTrigger = trigger;
- var count = 0;
-
- override def activate = {
- count = count + 1;
- if (count >= toggleTrigger) {
- state = !state;
- count = 0;
- }
- this
- }
-}
diff --git a/test/pending/shootout/methcall.scala.runner b/test/pending/shootout/methcall.scala.runner
deleted file mode 100644
index 555413cc6c..0000000000
--- a/test/pending/shootout/methcall.scala.runner
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends Application {
- for(n <- List(100000,400000,700000,1000000)) methcall.main(Array(n.toString))
-}
diff --git a/test/pending/shootout/nsieve.scala-4.check b/test/pending/shootout/nsieve.scala-4.check
deleted file mode 100644
index 5ae0440a5a..0000000000
--- a/test/pending/shootout/nsieve.scala-4.check
+++ /dev/null
@@ -1,9 +0,0 @@
-Primes up to 1280000 98610
-Primes up to 640000 52074
-Primes up to 320000 27608
-Primes up to 2560000 187134
-Primes up to 1280000 98610
-Primes up to 640000 52074
-Primes up to 5120000 356244
-Primes up to 2560000 187134
-Primes up to 1280000 98610
diff --git a/test/pending/shootout/nsieve.scala-4.scala b/test/pending/shootout/nsieve.scala-4.scala
deleted file mode 100644
index 741eb80398..0000000000
--- a/test/pending/shootout/nsieve.scala-4.scala
+++ /dev/null
@@ -1,45 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy
-*/
-
-
-object nsieve {
-
- def nsieve(m: Int, isPrime: Array[Boolean]) = {
- for (i <- List.range(2, m)) isPrime(i) = true
- var count = 0
-
- for (i <- List.range(2, m)){
- if (isPrime(i)){
- var k = i+i
- while (k < m){ isPrime(k) = false; k = k+i }
- count = count + 1
- }
- }
- count
- }
-
-
- def main(args: Array[String]) = {
- val n = Integer.parseInt(args(0))
- val m = (1<<n)*10000
- val flags = new Array[Boolean](m+1)
-
- def printPrimes(m: Int) = {
-
- def pad(i: Int, width: Int) = {
- val s = i.toString
- List.range(0, width - s.length)
- .map((i) => " ") .foldLeft("")((a,b) => a+b) + s
- }
-
- Console.println("Primes up to " + pad(m,8) + pad(nsieve(m,flags),9))
- }
-
-
- printPrimes(m)
- printPrimes( (1<<n-1)*10000 )
- printPrimes( (1<<n-2)*10000 )
- }
-}
diff --git a/test/pending/shootout/nsieve.scala-4.scala.runner b/test/pending/shootout/nsieve.scala-4.scala.runner
deleted file mode 100644
index 67be6d5844..0000000000
--- a/test/pending/shootout/nsieve.scala-4.scala.runner
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends Application {
- for(n <- List(7,8,9)) nsieve.main(Array(n.toString))
-}
diff --git a/test/pending/shootout/pidigits.check b/test/pending/shootout/pidigits.check
deleted file mode 100644
index ad4dc9962b..0000000000
--- a/test/pending/shootout/pidigits.check
+++ /dev/null
@@ -1,100 +0,0 @@
-3141592653 :10
-5897932384 :20
-6264338327 :30
-9502884197 :40
-1693993751 :50
-0582097494 :60
-4592307816 :70
-4062862089 :80
-9862803482 :90
-5342117067 :100
-9821480865 :110
-1328230664 :120
-7093844609 :130
-5505822317 :140
-2535940812 :150
-8481117450 :160
-2841027019 :170
-3852110555 :180
-9644622948 :190
-9549303819 :200
-6442881097 :210
-5665933446 :220
-1284756482 :230
-3378678316 :240
-5271201909 :250
-1456485669 :260
-2346034861 :270
-0454326648 :280
-2133936072 :290
-6024914127 :300
-3724587006 :310
-6063155881 :320
-7488152092 :330
-0962829254 :340
-0917153643 :350
-6789259036 :360
-0011330530 :370
-5488204665 :380
-2138414695 :390
-1941511609 :400
-4330572703 :410
-6575959195 :420
-3092186117 :430
-3819326117 :440
-9310511854 :450
-8074462379 :460
-9627495673 :470
-5188575272 :480
-4891227938 :490
-1830119491 :500
-2983367336 :510
-2440656643 :520
-0860213949 :530
-4639522473 :540
-7190702179 :550
-8609437027 :560
-7053921717 :570
-6293176752 :580
-3846748184 :590
-6766940513 :600
-2000568127 :610
-1452635608 :620
-2778577134 :630
-2757789609 :640
-1736371787 :650
-2146844090 :660
-1224953430 :670
-1465495853 :680
-7105079227 :690
-9689258923 :700
-5420199561 :710
-1212902196 :720
-0864034418 :730
-1598136297 :740
-7477130996 :750
-0518707211 :760
-3499999983 :770
-7297804995 :780
-1059731732 :790
-8160963185 :800
-9502445945 :810
-5346908302 :820
-6425223082 :830
-5334468503 :840
-5261931188 :850
-1710100031 :860
-3783875288 :870
-6587533208 :880
-3814206171 :890
-7766914730 :900
-3598253490 :910
-4287554687 :920
-3115956286 :930
-3882353787 :940
-5937519577 :950
-8185778053 :960
-2171226806 :970
-6130019278 :980
-7661119590 :990
-9216420198 :1000
diff --git a/test/pending/shootout/pidigits.scala b/test/pending/shootout/pidigits.scala
deleted file mode 100644
index b0becafda8..0000000000
--- a/test/pending/shootout/pidigits.scala
+++ /dev/null
@@ -1,69 +0,0 @@
-/* ------------------------------------------------------------------ */
-/* The Computer Language Shootout */
-/* http://shootout.alioth.debian.org/ */
-/* */
-/* Contributed by Anthony Borla */
-/* ------------------------------------------------------------------ */
-
-object pidigits
-{
- def main(args: Array[String]): Unit =
- {
- val N: Int = Integer.parseInt(args(0)); var i: Int = 10
-
- while (i <= N)
- {
- System.out.println(pi_digits(10) + "\t:" + i)
- i = i + 10
- }
-
- i = i - 10
-
- if (i < N)
- {
- System.out.println(pi_digits(N - i) + "\t:" + N)
- }
- }
-
- def compose(a: Array[BigInt], b: Array[BigInt]): Array[BigInt] =
- {
- return Array(a(0) * b(0),
- a(0) * b(1) + a(1) * b(3),
- a(2) * b(0) + a(3) * b(2),
- a(2) * b(1) + a(3) * b(3))
- }
-
- def extract(a: Array[BigInt], j: Int): BigInt =
- {
- return (a(0) * j + a(1)) / (a(2) * j + a(3))
- }
-
- def pi_digits(c: Int): String =
- {
- val r: StringBuffer = new StringBuffer(); var i: Int = 0
-
- while (i < c)
- {
- var y: BigInt = extract(Z, 3)
-
- while (y != extract(Z, 4))
- {
- K = K + 1; Z = compose(Z, Array(K, 4 * K + 2, 0, 2 * K + 1))
- y = extract(Z, 3)
- }
-
-// Z = compose(Array(10, (-y) * 10, 0, 1), Z)
-
- Z = compose(Array(10, y * (-10), 0, 1), Z)
-
- r.append(y); i = i + 1;
- }
-
- return r.toString()
- }
-
- var K: Int = 0
-
- var Z: Array[BigInt] = Array(1, 0, 0, 1)
-}
-
diff --git a/test/pending/shootout/pidigits.scala.runner b/test/pending/shootout/pidigits.scala.runner
deleted file mode 100644
index 4bf5a8bde9..0000000000
--- a/test/pending/shootout/pidigits.scala.runner
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends Application {
- for(n <- List(600,800,1000)) pidigits.main(Array(n.toString))
-}
diff --git a/test/pending/shootout/prodcons.scala b/test/pending/shootout/prodcons.scala
deleted file mode 100644
index d48d3e94d8..0000000000
--- a/test/pending/shootout/prodcons.scala
+++ /dev/null
@@ -1,64 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy (Scala novice)
-*/
-
-import concurrent.SyncVar;
-import concurrent.ops._;
-
-object prodcons {
- def main(args: Array[String]) = {
- val n = toPositiveInt(args);
- val buffer = new SharedBuffer();
- var p = 0;
- var c = 0;
- val cDone = new SyncVar[Boolean];
-
- spawn {
- while(p<n) { p=p+1; buffer put(p); }
- }
-
- spawn {
- var v: Int = _;
- while(c<n) { c=c+1; v = buffer.get; }
- cDone set true;
- }
-
- cDone.get;
- Console println(p + " " + c);
- }
-
-
- private def toPositiveInt(s: Array[String]) = {
- val i =
- try { Integer.parseInt(s(0)); }
- catch { case _ => 1 }
- if (i>0) i; else 1;
- }
-}
-
-
-private class SharedBuffer() {
- var contents: Int = _;
- var available = false;
-
- def get = synchronized {
- while (available == false) wait();
- available = false;
- // Console println("\t" + "get " + contents);
- notifyAll();
- contents
- }
-
- def put(value: Int) = synchronized {
- while (available == true) wait();
- contents = value;
- available = true;
- // Console println("put " + value);
- notifyAll();
- }
-}
-
-
-
-
diff --git a/test/pending/shootout/prodcons.scala.runner b/test/pending/shootout/prodcons.scala.runner
deleted file mode 100644
index 75faf8ca6e..0000000000
--- a/test/pending/shootout/prodcons.scala.runner
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends Application {
- for(n <- List(30000,70000,100000,150000)) prodcons.main(Array(n.toString))
-}
diff --git a/test/pending/shootout/random.scala b/test/pending/shootout/random.scala
deleted file mode 100644
index 0a86a35637..0000000000
--- a/test/pending/shootout/random.scala
+++ /dev/null
@@ -1,32 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy (Scala novice)
-*/
-
-object random {
- def main(args: Array[String]) = {
- var n = toPositiveInt(args);
- var result: Double = 0
-
- while (n>0) { result=generate(100.0); n=n-1; }
-
- Console.printf("{0,number,#.000000000}\n", result)
- }
-
- private val IM = 139968;
- private val IA = 3877;
- private val IC = 29573;
- private var seed = 42;
-
- def generate(max: Double) = {
- seed = (seed * IA + IC) % IM;
- max * seed / IM;
- }
-
- private def toPositiveInt(s: Array[String]) = {
- val i =
- try { Integer.parseInt(s(0)); }
- catch { case _ => 1 }
- if (i>0) i; else 1;
- }
-}
diff --git a/test/pending/shootout/random.scala.runner b/test/pending/shootout/random.scala.runner
deleted file mode 100644
index 11cbeef0f6..0000000000
--- a/test/pending/shootout/random.scala.runner
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends Application {
- for(n <- List(9000,300000,600000,900000)) random.main(Array(n.toString))
-}
diff --git a/test/pending/shootout/revcomp.scala-2.check b/test/pending/shootout/revcomp.scala-2.check
deleted file mode 100644
index 14d792ade8..0000000000
--- a/test/pending/shootout/revcomp.scala-2.check
+++ /dev/null
@@ -1,171 +0,0 @@
->ONE Homo sapiens alu
-CGGAGTCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGCGCGATCTCGGCTCACTGCAAC
-CTCCGCCTCCCGGGTTCAAGCGATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGGATTACA
-GGCGCGCGCCACCACGCCCGGCTAATTTTTGTATTTTTAGTAGAGACGGGGTTTCACCAT
-GTTGGCCAGGCTGGTCTCGAACTCCTGACCTCAGGTGATCCGCCCGCCTCGGCCTCCCAA
-AGTGCTGGGATTACAGGCGTGAGCCACCGCGCCCGGCCTTTTTGAGACGGAGTCTCGCTC
-TGTCGCCCAGGCTGGAGTGCAGTGGCGCGATCTCGGCTCACTGCAACCTCCGCCTCCCGG
-GTTCAAGCGATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGGATTACAGGCGCGCGCCACC
-ACGCCCGGCTAATTTTTGTATTTTTAGTAGAGACGGGGTTTCACCATGTTGGCCAGGCTG
-GTCTCGAACTCCTGACCTCAGGTGATCCGCCCGCCTCGGCCTCCCAAAGTGCTGGGATTA
-CAGGCGTGAGCCACCGCGCCCGGCCTTTTTGAGACGGAGTCTCGCTCTGTCGCCCAGGCT
-GGAGTGCAGTGGCGCGATCTCGGCTCACTGCAACCTCCGCCTCCCGGGTTCAAGCGATTC
-TCCTGCCTCAGCCTCCCGAGTAGCTGGGATTACAGGCGCGCGCCACCACGCCCGGCTAAT
-TTTTGTATTTTTAGTAGAGACGGGGTTTCACCATGTTGGCCAGGCTGGTCTCGAACTCCT
-GACCTCAGGTGATCCGCCCGCCTCGGCCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCA
-CCGCGCCCGGCCTTTTTGAGACGGAGTCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGC
-GCGATCTCGGCTCACTGCAACCTCCGCCTCCCGGGTTCAAGCGATTCTCCTGCCTCAGCC
-TCCCGAGTAGCTGGGATTACAGGCGCGCGCCACCACGCCCGGCTAATTTTTGTATTTTTA
-GTAGAGACGGGGTTTCACCATGTTGGCCAGGCTGGTCTCGAACTCCTGACCTCAGGTGAT
-CCGCCCGCCTCGGCCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCACCGCGCCCGGCCT
-TTTTGAGACGGAGTCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGCGCGATCTCGGCTC
-ACTGCAACCTCCGCCTCCCGGGTTCAAGCGATTCTCCTGCCTCAGCCTCCCGAGTAGCTG
-GGATTACAGGCGCGCGCCACCACGCCCGGCTAATTTTTGTATTTTTAGTAGAGACGGGGT
-TTCACCATGTTGGCCAGGCTGGTCTCGAACTCCTGACCTCAGGTGATCCGCCCGCCTCGG
-CCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCACCGCGCCCGGCCTTTTTGAGACGGAG
-TCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGCGCGATCTCGGCTCACTGCAACCTCCG
-CCTCCCGGGTTCAAGCGATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGGATTACAGGCGC
-GCGCCACCACGCCCGGCTAATTTTTGTATTTTTAGTAGAGACGGGGTTTCACCATGTTGG
-CCAGGCTGGTCTCGAACTCCTGACCTCAGGTGATCCGCCCGCCTCGGCCTCCCAAAGTGC
-TGGGATTACAGGCGTGAGCCACCGCGCCCGGCCTTTTTGAGACGGAGTCTCGCTCTGTCG
-CCCAGGCTGGAGTGCAGTGGCGCGATCTCGGCTCACTGCAACCTCCGCCTCCCGGGTTCA
-AGCGATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGGATTACAGGCGCGCGCCACCACGCC
-CGGCTAATTTTTGTATTTTTAGTAGAGACGGGGTTTCACCATGTTGGCCAGGCTGGTCTC
-GAACTCCTGACCTCAGGTGATCCGCCCGCCTCGGCCTCCCAAAGTGCTGGGATTACAGGC
-GTGAGCCACCGCGCCCGGCC
->TWO IUB ambiguity codes
-TAGGDHACHATCRGTRGVTGAGWTATGYTGCTGTCABACDWVTRTAAGAVVAGATTTNDA
-GASMTCTGCATBYTTCAAKTTACMTATTACTTCATARGGYACMRTGTTTTYTATACVAAT
-TTCTAKGDACKADACTATATNTANTCGTTCACGBCGYSCBHTANGGTGATCGTAAAGTAA
-CTATBAAAAGATSTGWATBCSGAKHTTABBAACGTSYCATGCAAVATKTSKTASCGGAAT
-WVATTTNTCCTTCTTCTTDDAGTGGTTGGATACVGTTAYMTMTBTACTTTHAGCTAGBAA
-AAGAGKAAGTTRATWATCAGATTMDDTTTAAAVAAATATTKTCYTAAATTVCNKTTRACG
-ADTATATTTATGATSADSCAATAWAGCGRTAGTGTAAGTGACVGRADYGTGCTACHVSDT
-CTVCARCSYTTAATATARAAAATTTAATTTACDAATTGBACAGTAYAABATBTGCAGBVG
-TGATGGDCAAAATBNMSTTABKATTGGSTCCTAGBTTACTTGTTTAGTTTATHCGATSTA
-AAGTCGAKAAASTGTTTTAWAKCAGATATACTTTTMTTTTGBATAGAGGAGCMATGATRA
-AAGGNCAYDCCDDGAAAGTHGBTAATCKYTBTACBGTBCTTTTTGDTAASSWTAAWAARA
-TTGGCTAAGWGRADTYACATAGCTCBTAGATAWAGCAATNGTATMATGTTKMMAGTAWTC
-CCNTSGAAWATWCAAAAMACTGAADNTYGATNAATCCGAYWNCTAACGTTAGAGDTTTTC
-ATCTGGKRTAVGAABVCTGWGBTCTDVGKATTBTCTAAGGVADAAAVWTCTAGGGGAGGG
-TTAGAACAATTAAHTAATNAAATGCATKATCTAAYRTDTCAGSAYTTYHGATRTTWAVTA
-BGNTCDACAGBCCRCAGWCRTCABTGMMAWGMCTCAACCGATRTGBCAVAATCGTDWDAA
-CAYAWAATWCTGGTAHCCCTAAGATAACSCTTAGTGSAACAWTBGTCDTTDGACWDBAAC
-HTTTNGSKTYYAAYGGATNTGATTTAARTTAMBAATCTAAGTBTCATYTAACTTADTGTT
-TCGATACGAAHGGCYATATACCWDTKYATDCSHTDTCAAAATGTGBACTGSCCVGATGTA
-TCMMAGCCTTDAAABAATGAAGAGTAACTHATMGVTTAATAACCCGGTTVSANTGCAATT
-GTGAGATTTAMGTTTAMAAYGCTGACAYAAAAAGGCACAMYTAAGVGGCTGGAABVTACG
-GATTSTYGTBVAKTATWACCGTGTKAGTDTGTATGTTTAAAGGAAAAAGTAACATARAAA
-GGTYCAMNYAAABTATAGNTSATANAGTCATCCTATWADKAACTRGTMSACDGTATSAYT
-AAHSHGTAABYGACTYTATADTGSTATAGAGAAATCGNTAAAGGAAATCAGTTGTNCYMV
-TNACDRTATBNATATASTAGAAMSCGGGANRCKKMCAAACATTNAGTCTRMAATBMTACC
-CGTACTTCTBGDSYAATWGAAAATGACADDCHAKAAAYATATTKTTTTCACANACWAGAA
-AKATCCTTATTAYKHKCTAAACARTATTTTDATBTVWCYGCAATACTAGGKAAASTTDGA
-MGGCHTTHAATVCAHDRYAGGRCTATACGTCMAGAGAGCTBTHGNACARTCCBDCTAAGA
-GCGGCTTTARTAAAGAATCCNAGTAWBTGACTTGAATTACWTVACAGAAABCAATNAAAC
-CGTNTRANTTGAYCMAWBADTANABRGGTKTHTWTAGTTVCTMBKTAGMTVKCCAGCANT
-TVAGSWTTAGCCGCRHTTTCCTTHNTATTAAGAAGAATAGGMTRAARTCTABGTACDTTT
-TATAAVDHAHTATAGATCCTAGTAAGYTWATDWCATGAGGGATAGTAAMDMNGBASTWAM
-TSTATRBAYDABATGTATATYCGCACTGTTTTAACMCWBTATAWAGTATBTSTATVTTAR
-CCTMTTAAKADATCAACTAATYTSVTAKGDATTATGCKTCAYCAKAATACTTKAANGAGT
-ATTSDAGATCGGAAATACTTAAYAAVGTATMCGCTTGTGTDCTAATYTATTTTATTTWAA
-CAGWRCTATGTAGMTGTTTGTTYKTNGTTKTCAGAACNTRACCTACKTGSRATGTGGGGG
-CTGTCATTAAGTAAATNGSTTABCCCCTCGCAGCTCWHTCGCGAAGCAVATGCKACGHCA
-ACAKTTAATAACASAAADATTWNYTGTAATTGTTCGTMHACHTWATGTGCWTTTTGAAHY
-ACTTTGTAYAMSAAACTTAADAAATATAGTABMATATYAATGSGGTAGTTTGTGTBYGGT
-TWSGSVGWMATTDMTCCWWCABTCSVACAGBAATGTTKATBGTCAATAATCTTCTTAAAC
-ARVAATHAGYBWCTRWCABGTWWAATCTAAGTCASTAAAKTAAGVKBAATTBGABACGTA
-AGGTTAAATAAAAACTRMDTWBCTTTTTAATAAAAGATMGCCTACKAKNTBAGYRASTGT
-ASSTCGTHCGAAKTTATTATATTYTTTGTAGAACATGTCAAAACTWTWTHGKTCCYAATA
-AAGTGGAYTMCYTAARCSTAAATWAKTGAATTTRAGTCTSSATACGACWAKAASATDAAA
-TGYYACTSAACAAHAKTSHYARGASTATTATTHAGGYGGASTTTBGAKGATSANAACACD
-TRGSTTRAAAAAAAACAAGARTCVTAGTAAGATAWATGVHAAKATWGAAAAGTYAHVTAC
-TCTGRTGTCAWGATRVAAKTCGCAAVCGASWGGTTRTCSAMCCTAACASGWKKAWDAATG
-ACRCBACTATGTGTCTTCAAAHGSCTATATTTCGTVWAGAAGTAYCKGARAKSGKAGTAN
-TTTCYACATWATGTCTAAAADMDTWCAATSTKDACAMAADADBSAAATAGGCTHAHAGTA
-CGACVGAATTATAAAGAHCCVAYHGHTTTACATSTTTATGNCCMTAGCATATGATAVAAG
->THREE Homo sapiens frequency
-ATATTTATCTTTTCACTTCCTACATTGGTCAGACCATTATTCGACACGTGGCGTCATTTT
-GTCATACCGGGTAATGTTGGAAACAAAACGTACTGATAAAATACTGAGTTGTAAACTCTA
-ATCAGATAACGCGCTTGGATATTAAGATTCACACAGGGGTTTCGGCTGTAAAAAAACTTG
-TGGAGCTGTTCTGGGACAGATAAGTTGTACCTCGTACTTAGCTAATTAATGAACCAACTG
-ATTACGATAGAACAATTCTGAGGCCGCCAGGACAGCCAAATTTTAATCTTATAAAGCTGG
-AAACAGCCGGTATTAGCTTCTCGCATACTTTGCCTGCATTGGTACCTTACAGATATCAGC
-GTAGTCATATACACCTCGGTCTCAGCTAAGCTTGTATCTCTTAGAGTAGTTCAAAGATAG
-TGGACAATACCTGTGGAATCGATTGCAGATATGGATTTATTTAACTACTGAGTCTCATTC
-ACAAGCTAAGCAAGGAGCACGTTTTGGTGCCGGCATACCGATTTGCTATCATGTCAGCAA
-ATTTGCGTTGTATTCCTAGTTGCACCCATTAAGGCCACACTCCGAACCTAATTATTACAT
-CGCAAAGACATGTACGAAGGACCCGATGTCGAATAGAAGGGAGGACTGTTCATTGGAAGC
-TAGACCAGAGGAATCGCAAAGATGCAACTCTTACAATAAAAATCTAATTTCAGTCAACAC
-GCAATTTCTATAAGGTTTCCGATAATAATGAACCGTCTTCCACAGGGGAATTTGCCATGC
-TCGTAAAAGTAGTTAATCCAAGTAGAAGAAATTTTGATAATGTTTTAAGTTGGCACGAAG
-GAATTCAGAGAGATCTTACCTAACAAAGGCATTAGTAGATGTTCCTTGGTTCACACTCGG
-TCAATCAGAGCACATACTACGGGCGATACCGGGAATGACACAACATCAATGAGATTGTTA
-AGTGAGGTAATTGACTTTAGAGGACTCGATCAGTATACTGTCACTATGAACATCGTATTA
-ATTGTTATCCGATATATACACCACCGATTTGCTTGTGCAAGGTTACAGACCCATTCGATA
-AATACAAACACGGAGCGATATTATTTAAGGAGTGCTGTCTTCAAAAGAATTATTCCCACA
-CCGACATAAGAACTTCGCTCCGTCATTCCAGATTTAAATAACATAACGTAACGCTTTGCT
-GATAACATAACATAACCGAGAATTTGCTTAGGAAATTTGGAGCAATATTGCATTGTTTCT
-CAGTCATCACAAGGCCCGCCAAAGAACTCTGAGAATCAGGATTCAACATGATTGGTAAGA
-CTCTATATATATAACTTAATTCTTGTGTCCGGAGATAGAAAGAGGACGAGAGATACTACG
-AAAGAAAGTGTACTTCGATGTATCAATTCAGACGCCTTCTCTATCATCAACATTATAGGT
-CTCGTATATGCTCGGCGCGATCTGCTTCTCTCCGCCAATAGCCCCATAGTGTATTTCAAG
-CGCAGTAACAGTGAAATCGTTACGAAGGTAGGGATGTTGCTTATAATTGTCGTAACTTAT
-CGCTTATGTATCTTTCAAGAATGAACGGCAGCATATACATACGTTCTACCTTTAGCTACA
-AAGCATCCATATACTCCCTCTCATGATTGAAACTCTTCCCTATTTTGTAGCCAATAGTGA
-AAGCGTATTAGTATAAATTCGTCGGTTTTTCACTCGCAACTGTTATACTCTGCAAACAAA
-CGAAAGCCTCATAGTACAAACCTAAAGCTACATACTTCATCATTGGCAGACCAGTGGCGG
-TATTTCTACGGAAGCATCACTATAGATATAAAGTTTCCCTTCATGTACGTCTGTTAACCA
-TATCACAAGAAACTGCTATCTCTGTCACGTAACAATTCACGCGCCTTATCGCCAAATGTT
-CATATATGCGCGGTATACGTATGAACGAATACTAATTAGTATAACGGAGGATTCACGGGA
-GGGATACTTGGGGCATTTATAAATCGTCTAAAAATTTTCTATCAGCACTTGCGGGTTATA
-GTGGATTACTAGGCAACATAATATTCTGTATTGGTCCAAATGACGCTATAGATAAATTAG
-CAAAATACATTGTTTCCATTTATGTAAGTCGAAACTCCAGGACTCCCGGGAACCAGTTAA
-ACCGTCTGGAAAAGACACATTGTGAGCGGGACTTCAATGATAGCTTTCAATGAGCTTCTC
-ATGCTTGGGGTCTGTACATATATGTTGGCGAAATTATCGTCTGTATTCTGTTATGCTTTG
-ATCATGGGTTATTAGTATAGTGTCCGGTTAAGTACCAATACCGCTAGAGACCCGACCTAA
-GTCGATAACTAACGATCATCGACGTAAGGATCGTCTCGATCAGTACTTCAGTCTAGATCT
-GGGAATAGTAACTCGTTAGTGAACTATGTCGTGTCATAACTCTAAAATGCAATCAAATCT
-TATTATTGAGTATTGATTATATAAAGCATCCGCTTAGCTTTACCCTCAAATGTTATATGC
-AATTTAAAGCGCTTGATATCGTCTACTCAAGTTCAGGTTTCACATGGCCGCAACGTGACG
-TTATTAGAGGTGGGTCATCATCTCTGAGGCTAGTGATGTTGAATACTCATTGAATGGGAA
-GTGGAATACCATGCTCGTAGGTAACAGCATGACCTATAAAATATACTATGGGTGTGTGGT
-AGATCAATATTGTTCAAGCATATCGTAACAATAACGGCTGAAATGTTACTGACATGAAAG
-AGGGAGTCCAAACCATTCTAACAGCTGATCAAGTCGTCTAAAAACGCCTGGTTCAGCCTT
-AAGAGTTATAAGCCAGACAAATTGTATCAATAGAGAATCCGTAAATTCCTCGGCCAACCT
-CTTGCAAAGACATCACTATCAATATACTACCGTGATCTTAATTAGTGAACTTATATAAAT
-ATCTACAACCAGATTCAACGGAAAAGCTTTAGTGGATTAGAAATTGCCAAGAATCACATT
-CATGTGGGTTCGAATGCTTTAGTAATACCATTTCGCCGAGTAGTCACTTCGCTGAACTGT
-CGTAAATTGCTATGACATAATCGAAAAGGATTGTCAAGAGTCGATTACTGCGGACTAATA
-ATCCCCACGGGGGTGGTCTCATGTCTCCCCAGGCGAGTGGGGACGGTTGATAAACACGCT
-GCATCGCGGACTGATGTTCCCAGTATTACATAGTCACATTGGATTGCGAGTAGTCTACCT
-ATTTATGAGCGAGAGATGCCTCTAACTACTTCGACTTTTAAAACCTTTCCACGCCAGTAT
-TCGGCGAAAGGGAAGTATTAAGGGTTGTCATAATTAAGCTGATACCACTTCAGACTTTGC
-TCTACTTCTGTCTTTCATTGGTTTAGTAAAGTCTGTCCATTCGTCGAGACCGTCTTTTGC
-AGCCTCATTCTACCAACTGCTCCGACTCTTAGTCTGCTTCTCCCAGCGTTATAACAAGAG
-GCATTTTGTCATCCTTAAAACAATAATAAAGAACTCGGAGCACTGATATAATGACTGAAT
-TAGAACCGCTTAAAAATACAACGAATAGATAAGACTATCGGATAAGATCTAATATGTAGT
-GATTAAGCCCTTTATTAATTAATAATAGTTACCCTTTCTGATGTAACGCGACATATTACG
-ATTTAGTGGCACGTCTGAATTGCAAAGCAGATCTCTACCCGATTTTTATTATAAATCCCG
-TATACATCTTGACTTGAGTAATTGTTCATCTTTTTATATCTCTTCGTACTACAAATAATT
-AATATCTCAACCCGTATTGTGTGATTCTAATTACCAACAGAATACGAGGAGGTTTTTGCT
-TAGGGCCATATATAATGAATCTATCTCGTTTATTCGCGGAACCCGAGATAACATTACGAT
-GTAACTATTTTAGAGAACTTAATACAAGAAACATTGCTGATTACTCATAACTAAATGCTT
-GGTAATATATCCTCAGTGCCCCTACCATCTTTTACGCAGGGATGTAATTACTTAGGATTC
-ATTGTGTAAGAATTACAATGAACGATGGATATGAAGGCATGTTGCGAGGTGTTCCTTGGT
-ATGTGAAGTTCGCAGGGCAACAAAAATTTCGCAGAATAGGCCTCAAAGTATTGGTAAAGA
-AGACAACTAATCATCACGAGCTTCTGATATCAATACGAACGAGTCCTGTGATGGATGAAA
-GAAAGTCGTATCGAAAATGTCAAGAGTCTGCCCAATGTAACTTACTTCAAAAAATAACGC
-TTCCGCCAAGTACGTTCGAATAAACGTAATTTTAAAAATACATAAGGGGTGTTAGAAAGT
-AAGCGACGGGATATAAGTTAGACTCAAGATTCCGCCGTAAAACGAGACTGATTCCGAAGA
-TTGTTCGTGGATCTGGTCATGACTTTCACTGAGTAAGGAGTTTCGACATATGTCAATAAA
-CACAAAAATAGAAGCTATTCGATCTGAAAAATATTAGGACAAGAAACTATCTCACGCTAG
-CCCAGAATATTCACTCACCCACGGGCGATACTAAAGCACTATATAGTCGCGTGATTACTA
-TACATATGGTACACATAAGAATCACGATCAGGTTCTCAATTTTCAACAATATATGTTTAT
-TTGCATAGGTAATATTAGGCCTTTAAGAGAAGGATGGGTGAGATACTCCGGGGATGGCGG
-CAATAAAGAAAAACACGATATGAGTAATAGGATCCTAATATCTTGGCGAGAGACTTAAGG
-TACGAATTTTGCGCAATCTATTTTTTACTTGGCCAGAATTCATGTATGGTATAAGTACGA
-ACTTTTTTGATCACTTTCATGGCTACCTGATTAGGATAGTTTGAGGAATTTCCCAAATAT
-ACCGATTTAATATACACTAGGGCTTGTCACTTTGAGTCAGAAAAAGAATATAATTACTTA
-GGGTAATGCTGCATACATATTCTTATATTGCAAAGGTTCTCTGGGTAATCTTGAGCCTTC
-ACGATACCTGGTGAAGTGTT
diff --git a/test/pending/shootout/revcomp.scala-2.scala b/test/pending/shootout/revcomp.scala-2.scala
deleted file mode 100644
index 03fb25af1b..0000000000
--- a/test/pending/shootout/revcomp.scala-2.scala
+++ /dev/null
@@ -1,92 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy
-*/
-
-import java.io._
-import scala.collection.mutable.Stack
-
-object revcomp {
-
- val IUB = IUBCodeComplements
-
- def IUBCodeComplements() = {
- val code = "ABCDGHKMNRSTVWYabcdghkmnrstvwy".getBytes
- val comp = "TVGHCDMKNYSABWRTVGHCDMKNYSABWR".getBytes
- val a: Array[Byte] = new Array( 'z'.toByte )
-
- for (indexValue <- code zip comp)
- indexValue match { case (i,v) => a(i) = v }
-
- a
- }
-
-
- type LineStack = Stack[Array[Byte]]
-
- def main(args: Array[String]) = {
- val r = new BufferedReader(new InputStreamReader(System.in))
- val w = new BufferedOutputStream(System.out)
-
- var lines: LineStack = new Stack
- var desc = ""
-
- var line = r.readLine
- while (line != null) {
- val c = line.charAt(0)
- if (c == '>'){
- if (desc.length > 0){
- complementReverseWrite(desc, lines, w)
- lines = new Stack
- }
- desc = line
- } else {
- if (c != ';') lines += line.getBytes
- }
- line = r.readLine
- }
- r.close
-
- if (desc.length > 0) complementReverseWrite(desc, lines, w)
- w.close
- }
-
-
- def complementReverseWrite(desc: String, lines: LineStack,
- w: BufferedOutputStream) = {
-
- def inplaceComplementReverse(b: Array[Byte]) = {
- var i = 0
- var j = b.length - 1
- while (i < j){
- val swap = b(i)
- b(i) = IUB( b(j) )
- b(j) = IUB( swap )
- i = i + 1
- j = j - 1
- }
- if (i == j) b(i) = IUB( b(i) )
- }
-
- val nl = '\n'.toByte
- w.write(desc.getBytes); w.write(nl)
-
- val n = 60
- val k = if (lines.isEmpty) 0 else lines.top.length
- val isSplitLine = k < n
- var isFirstLine = true
-
- while (!lines.isEmpty) {
- val line = lines.pop
- inplaceComplementReverse(line)
-
- if (isSplitLine){
- if (isFirstLine){ w.write(line); isFirstLine = false }
- else { w.write(line,0,n-k); w.write(nl); w.write(line,n-k,k) }
- }
- else { w.write(line); w.write(nl) }
- }
- if (isSplitLine && !isFirstLine) w.write(nl)
- }
-
-}
diff --git a/test/pending/shootout/revcomp.scala-2.scala.runner b/test/pending/shootout/revcomp.scala-2.scala.runner
deleted file mode 100644
index f51d6170c8..0000000000
--- a/test/pending/shootout/revcomp.scala-2.scala.runner
+++ /dev/null
@@ -1,6 +0,0 @@
-object Test extends Application {
- for(n <- List(25000,250000,2500000)) {
- System.setIn(new java.io.FileInputStream(System.getProperty("partest.cwd")+"/revcomp-input"+n+".txt"))
- revcomp.main(Array(n.toString))
- }
-}
diff --git a/test/pending/shootout/revcomp.scala-3.check b/test/pending/shootout/revcomp.scala-3.check
deleted file mode 100644
index 14d792ade8..0000000000
--- a/test/pending/shootout/revcomp.scala-3.check
+++ /dev/null
@@ -1,171 +0,0 @@
->ONE Homo sapiens alu
-CGGAGTCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGCGCGATCTCGGCTCACTGCAAC
-CTCCGCCTCCCGGGTTCAAGCGATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGGATTACA
-GGCGCGCGCCACCACGCCCGGCTAATTTTTGTATTTTTAGTAGAGACGGGGTTTCACCAT
-GTTGGCCAGGCTGGTCTCGAACTCCTGACCTCAGGTGATCCGCCCGCCTCGGCCTCCCAA
-AGTGCTGGGATTACAGGCGTGAGCCACCGCGCCCGGCCTTTTTGAGACGGAGTCTCGCTC
-TGTCGCCCAGGCTGGAGTGCAGTGGCGCGATCTCGGCTCACTGCAACCTCCGCCTCCCGG
-GTTCAAGCGATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGGATTACAGGCGCGCGCCACC
-ACGCCCGGCTAATTTTTGTATTTTTAGTAGAGACGGGGTTTCACCATGTTGGCCAGGCTG
-GTCTCGAACTCCTGACCTCAGGTGATCCGCCCGCCTCGGCCTCCCAAAGTGCTGGGATTA
-CAGGCGTGAGCCACCGCGCCCGGCCTTTTTGAGACGGAGTCTCGCTCTGTCGCCCAGGCT
-GGAGTGCAGTGGCGCGATCTCGGCTCACTGCAACCTCCGCCTCCCGGGTTCAAGCGATTC
-TCCTGCCTCAGCCTCCCGAGTAGCTGGGATTACAGGCGCGCGCCACCACGCCCGGCTAAT
-TTTTGTATTTTTAGTAGAGACGGGGTTTCACCATGTTGGCCAGGCTGGTCTCGAACTCCT
-GACCTCAGGTGATCCGCCCGCCTCGGCCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCA
-CCGCGCCCGGCCTTTTTGAGACGGAGTCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGC
-GCGATCTCGGCTCACTGCAACCTCCGCCTCCCGGGTTCAAGCGATTCTCCTGCCTCAGCC
-TCCCGAGTAGCTGGGATTACAGGCGCGCGCCACCACGCCCGGCTAATTTTTGTATTTTTA
-GTAGAGACGGGGTTTCACCATGTTGGCCAGGCTGGTCTCGAACTCCTGACCTCAGGTGAT
-CCGCCCGCCTCGGCCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCACCGCGCCCGGCCT
-TTTTGAGACGGAGTCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGCGCGATCTCGGCTC
-ACTGCAACCTCCGCCTCCCGGGTTCAAGCGATTCTCCTGCCTCAGCCTCCCGAGTAGCTG
-GGATTACAGGCGCGCGCCACCACGCCCGGCTAATTTTTGTATTTTTAGTAGAGACGGGGT
-TTCACCATGTTGGCCAGGCTGGTCTCGAACTCCTGACCTCAGGTGATCCGCCCGCCTCGG
-CCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCACCGCGCCCGGCCTTTTTGAGACGGAG
-TCTCGCTCTGTCGCCCAGGCTGGAGTGCAGTGGCGCGATCTCGGCTCACTGCAACCTCCG
-CCTCCCGGGTTCAAGCGATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGGATTACAGGCGC
-GCGCCACCACGCCCGGCTAATTTTTGTATTTTTAGTAGAGACGGGGTTTCACCATGTTGG
-CCAGGCTGGTCTCGAACTCCTGACCTCAGGTGATCCGCCCGCCTCGGCCTCCCAAAGTGC
-TGGGATTACAGGCGTGAGCCACCGCGCCCGGCCTTTTTGAGACGGAGTCTCGCTCTGTCG
-CCCAGGCTGGAGTGCAGTGGCGCGATCTCGGCTCACTGCAACCTCCGCCTCCCGGGTTCA
-AGCGATTCTCCTGCCTCAGCCTCCCGAGTAGCTGGGATTACAGGCGCGCGCCACCACGCC
-CGGCTAATTTTTGTATTTTTAGTAGAGACGGGGTTTCACCATGTTGGCCAGGCTGGTCTC
-GAACTCCTGACCTCAGGTGATCCGCCCGCCTCGGCCTCCCAAAGTGCTGGGATTACAGGC
-GTGAGCCACCGCGCCCGGCC
->TWO IUB ambiguity codes
-TAGGDHACHATCRGTRGVTGAGWTATGYTGCTGTCABACDWVTRTAAGAVVAGATTTNDA
-GASMTCTGCATBYTTCAAKTTACMTATTACTTCATARGGYACMRTGTTTTYTATACVAAT
-TTCTAKGDACKADACTATATNTANTCGTTCACGBCGYSCBHTANGGTGATCGTAAAGTAA
-CTATBAAAAGATSTGWATBCSGAKHTTABBAACGTSYCATGCAAVATKTSKTASCGGAAT
-WVATTTNTCCTTCTTCTTDDAGTGGTTGGATACVGTTAYMTMTBTACTTTHAGCTAGBAA
-AAGAGKAAGTTRATWATCAGATTMDDTTTAAAVAAATATTKTCYTAAATTVCNKTTRACG
-ADTATATTTATGATSADSCAATAWAGCGRTAGTGTAAGTGACVGRADYGTGCTACHVSDT
-CTVCARCSYTTAATATARAAAATTTAATTTACDAATTGBACAGTAYAABATBTGCAGBVG
-TGATGGDCAAAATBNMSTTABKATTGGSTCCTAGBTTACTTGTTTAGTTTATHCGATSTA
-AAGTCGAKAAASTGTTTTAWAKCAGATATACTTTTMTTTTGBATAGAGGAGCMATGATRA
-AAGGNCAYDCCDDGAAAGTHGBTAATCKYTBTACBGTBCTTTTTGDTAASSWTAAWAARA
-TTGGCTAAGWGRADTYACATAGCTCBTAGATAWAGCAATNGTATMATGTTKMMAGTAWTC
-CCNTSGAAWATWCAAAAMACTGAADNTYGATNAATCCGAYWNCTAACGTTAGAGDTTTTC
-ATCTGGKRTAVGAABVCTGWGBTCTDVGKATTBTCTAAGGVADAAAVWTCTAGGGGAGGG
-TTAGAACAATTAAHTAATNAAATGCATKATCTAAYRTDTCAGSAYTTYHGATRTTWAVTA
-BGNTCDACAGBCCRCAGWCRTCABTGMMAWGMCTCAACCGATRTGBCAVAATCGTDWDAA
-CAYAWAATWCTGGTAHCCCTAAGATAACSCTTAGTGSAACAWTBGTCDTTDGACWDBAAC
-HTTTNGSKTYYAAYGGATNTGATTTAARTTAMBAATCTAAGTBTCATYTAACTTADTGTT
-TCGATACGAAHGGCYATATACCWDTKYATDCSHTDTCAAAATGTGBACTGSCCVGATGTA
-TCMMAGCCTTDAAABAATGAAGAGTAACTHATMGVTTAATAACCCGGTTVSANTGCAATT
-GTGAGATTTAMGTTTAMAAYGCTGACAYAAAAAGGCACAMYTAAGVGGCTGGAABVTACG
-GATTSTYGTBVAKTATWACCGTGTKAGTDTGTATGTTTAAAGGAAAAAGTAACATARAAA
-GGTYCAMNYAAABTATAGNTSATANAGTCATCCTATWADKAACTRGTMSACDGTATSAYT
-AAHSHGTAABYGACTYTATADTGSTATAGAGAAATCGNTAAAGGAAATCAGTTGTNCYMV
-TNACDRTATBNATATASTAGAAMSCGGGANRCKKMCAAACATTNAGTCTRMAATBMTACC
-CGTACTTCTBGDSYAATWGAAAATGACADDCHAKAAAYATATTKTTTTCACANACWAGAA
-AKATCCTTATTAYKHKCTAAACARTATTTTDATBTVWCYGCAATACTAGGKAAASTTDGA
-MGGCHTTHAATVCAHDRYAGGRCTATACGTCMAGAGAGCTBTHGNACARTCCBDCTAAGA
-GCGGCTTTARTAAAGAATCCNAGTAWBTGACTTGAATTACWTVACAGAAABCAATNAAAC
-CGTNTRANTTGAYCMAWBADTANABRGGTKTHTWTAGTTVCTMBKTAGMTVKCCAGCANT
-TVAGSWTTAGCCGCRHTTTCCTTHNTATTAAGAAGAATAGGMTRAARTCTABGTACDTTT
-TATAAVDHAHTATAGATCCTAGTAAGYTWATDWCATGAGGGATAGTAAMDMNGBASTWAM
-TSTATRBAYDABATGTATATYCGCACTGTTTTAACMCWBTATAWAGTATBTSTATVTTAR
-CCTMTTAAKADATCAACTAATYTSVTAKGDATTATGCKTCAYCAKAATACTTKAANGAGT
-ATTSDAGATCGGAAATACTTAAYAAVGTATMCGCTTGTGTDCTAATYTATTTTATTTWAA
-CAGWRCTATGTAGMTGTTTGTTYKTNGTTKTCAGAACNTRACCTACKTGSRATGTGGGGG
-CTGTCATTAAGTAAATNGSTTABCCCCTCGCAGCTCWHTCGCGAAGCAVATGCKACGHCA
-ACAKTTAATAACASAAADATTWNYTGTAATTGTTCGTMHACHTWATGTGCWTTTTGAAHY
-ACTTTGTAYAMSAAACTTAADAAATATAGTABMATATYAATGSGGTAGTTTGTGTBYGGT
-TWSGSVGWMATTDMTCCWWCABTCSVACAGBAATGTTKATBGTCAATAATCTTCTTAAAC
-ARVAATHAGYBWCTRWCABGTWWAATCTAAGTCASTAAAKTAAGVKBAATTBGABACGTA
-AGGTTAAATAAAAACTRMDTWBCTTTTTAATAAAAGATMGCCTACKAKNTBAGYRASTGT
-ASSTCGTHCGAAKTTATTATATTYTTTGTAGAACATGTCAAAACTWTWTHGKTCCYAATA
-AAGTGGAYTMCYTAARCSTAAATWAKTGAATTTRAGTCTSSATACGACWAKAASATDAAA
-TGYYACTSAACAAHAKTSHYARGASTATTATTHAGGYGGASTTTBGAKGATSANAACACD
-TRGSTTRAAAAAAAACAAGARTCVTAGTAAGATAWATGVHAAKATWGAAAAGTYAHVTAC
-TCTGRTGTCAWGATRVAAKTCGCAAVCGASWGGTTRTCSAMCCTAACASGWKKAWDAATG
-ACRCBACTATGTGTCTTCAAAHGSCTATATTTCGTVWAGAAGTAYCKGARAKSGKAGTAN
-TTTCYACATWATGTCTAAAADMDTWCAATSTKDACAMAADADBSAAATAGGCTHAHAGTA
-CGACVGAATTATAAAGAHCCVAYHGHTTTACATSTTTATGNCCMTAGCATATGATAVAAG
->THREE Homo sapiens frequency
-ATATTTATCTTTTCACTTCCTACATTGGTCAGACCATTATTCGACACGTGGCGTCATTTT
-GTCATACCGGGTAATGTTGGAAACAAAACGTACTGATAAAATACTGAGTTGTAAACTCTA
-ATCAGATAACGCGCTTGGATATTAAGATTCACACAGGGGTTTCGGCTGTAAAAAAACTTG
-TGGAGCTGTTCTGGGACAGATAAGTTGTACCTCGTACTTAGCTAATTAATGAACCAACTG
-ATTACGATAGAACAATTCTGAGGCCGCCAGGACAGCCAAATTTTAATCTTATAAAGCTGG
-AAACAGCCGGTATTAGCTTCTCGCATACTTTGCCTGCATTGGTACCTTACAGATATCAGC
-GTAGTCATATACACCTCGGTCTCAGCTAAGCTTGTATCTCTTAGAGTAGTTCAAAGATAG
-TGGACAATACCTGTGGAATCGATTGCAGATATGGATTTATTTAACTACTGAGTCTCATTC
-ACAAGCTAAGCAAGGAGCACGTTTTGGTGCCGGCATACCGATTTGCTATCATGTCAGCAA
-ATTTGCGTTGTATTCCTAGTTGCACCCATTAAGGCCACACTCCGAACCTAATTATTACAT
-CGCAAAGACATGTACGAAGGACCCGATGTCGAATAGAAGGGAGGACTGTTCATTGGAAGC
-TAGACCAGAGGAATCGCAAAGATGCAACTCTTACAATAAAAATCTAATTTCAGTCAACAC
-GCAATTTCTATAAGGTTTCCGATAATAATGAACCGTCTTCCACAGGGGAATTTGCCATGC
-TCGTAAAAGTAGTTAATCCAAGTAGAAGAAATTTTGATAATGTTTTAAGTTGGCACGAAG
-GAATTCAGAGAGATCTTACCTAACAAAGGCATTAGTAGATGTTCCTTGGTTCACACTCGG
-TCAATCAGAGCACATACTACGGGCGATACCGGGAATGACACAACATCAATGAGATTGTTA
-AGTGAGGTAATTGACTTTAGAGGACTCGATCAGTATACTGTCACTATGAACATCGTATTA
-ATTGTTATCCGATATATACACCACCGATTTGCTTGTGCAAGGTTACAGACCCATTCGATA
-AATACAAACACGGAGCGATATTATTTAAGGAGTGCTGTCTTCAAAAGAATTATTCCCACA
-CCGACATAAGAACTTCGCTCCGTCATTCCAGATTTAAATAACATAACGTAACGCTTTGCT
-GATAACATAACATAACCGAGAATTTGCTTAGGAAATTTGGAGCAATATTGCATTGTTTCT
-CAGTCATCACAAGGCCCGCCAAAGAACTCTGAGAATCAGGATTCAACATGATTGGTAAGA
-CTCTATATATATAACTTAATTCTTGTGTCCGGAGATAGAAAGAGGACGAGAGATACTACG
-AAAGAAAGTGTACTTCGATGTATCAATTCAGACGCCTTCTCTATCATCAACATTATAGGT
-CTCGTATATGCTCGGCGCGATCTGCTTCTCTCCGCCAATAGCCCCATAGTGTATTTCAAG
-CGCAGTAACAGTGAAATCGTTACGAAGGTAGGGATGTTGCTTATAATTGTCGTAACTTAT
-CGCTTATGTATCTTTCAAGAATGAACGGCAGCATATACATACGTTCTACCTTTAGCTACA
-AAGCATCCATATACTCCCTCTCATGATTGAAACTCTTCCCTATTTTGTAGCCAATAGTGA
-AAGCGTATTAGTATAAATTCGTCGGTTTTTCACTCGCAACTGTTATACTCTGCAAACAAA
-CGAAAGCCTCATAGTACAAACCTAAAGCTACATACTTCATCATTGGCAGACCAGTGGCGG
-TATTTCTACGGAAGCATCACTATAGATATAAAGTTTCCCTTCATGTACGTCTGTTAACCA
-TATCACAAGAAACTGCTATCTCTGTCACGTAACAATTCACGCGCCTTATCGCCAAATGTT
-CATATATGCGCGGTATACGTATGAACGAATACTAATTAGTATAACGGAGGATTCACGGGA
-GGGATACTTGGGGCATTTATAAATCGTCTAAAAATTTTCTATCAGCACTTGCGGGTTATA
-GTGGATTACTAGGCAACATAATATTCTGTATTGGTCCAAATGACGCTATAGATAAATTAG
-CAAAATACATTGTTTCCATTTATGTAAGTCGAAACTCCAGGACTCCCGGGAACCAGTTAA
-ACCGTCTGGAAAAGACACATTGTGAGCGGGACTTCAATGATAGCTTTCAATGAGCTTCTC
-ATGCTTGGGGTCTGTACATATATGTTGGCGAAATTATCGTCTGTATTCTGTTATGCTTTG
-ATCATGGGTTATTAGTATAGTGTCCGGTTAAGTACCAATACCGCTAGAGACCCGACCTAA
-GTCGATAACTAACGATCATCGACGTAAGGATCGTCTCGATCAGTACTTCAGTCTAGATCT
-GGGAATAGTAACTCGTTAGTGAACTATGTCGTGTCATAACTCTAAAATGCAATCAAATCT
-TATTATTGAGTATTGATTATATAAAGCATCCGCTTAGCTTTACCCTCAAATGTTATATGC
-AATTTAAAGCGCTTGATATCGTCTACTCAAGTTCAGGTTTCACATGGCCGCAACGTGACG
-TTATTAGAGGTGGGTCATCATCTCTGAGGCTAGTGATGTTGAATACTCATTGAATGGGAA
-GTGGAATACCATGCTCGTAGGTAACAGCATGACCTATAAAATATACTATGGGTGTGTGGT
-AGATCAATATTGTTCAAGCATATCGTAACAATAACGGCTGAAATGTTACTGACATGAAAG
-AGGGAGTCCAAACCATTCTAACAGCTGATCAAGTCGTCTAAAAACGCCTGGTTCAGCCTT
-AAGAGTTATAAGCCAGACAAATTGTATCAATAGAGAATCCGTAAATTCCTCGGCCAACCT
-CTTGCAAAGACATCACTATCAATATACTACCGTGATCTTAATTAGTGAACTTATATAAAT
-ATCTACAACCAGATTCAACGGAAAAGCTTTAGTGGATTAGAAATTGCCAAGAATCACATT
-CATGTGGGTTCGAATGCTTTAGTAATACCATTTCGCCGAGTAGTCACTTCGCTGAACTGT
-CGTAAATTGCTATGACATAATCGAAAAGGATTGTCAAGAGTCGATTACTGCGGACTAATA
-ATCCCCACGGGGGTGGTCTCATGTCTCCCCAGGCGAGTGGGGACGGTTGATAAACACGCT
-GCATCGCGGACTGATGTTCCCAGTATTACATAGTCACATTGGATTGCGAGTAGTCTACCT
-ATTTATGAGCGAGAGATGCCTCTAACTACTTCGACTTTTAAAACCTTTCCACGCCAGTAT
-TCGGCGAAAGGGAAGTATTAAGGGTTGTCATAATTAAGCTGATACCACTTCAGACTTTGC
-TCTACTTCTGTCTTTCATTGGTTTAGTAAAGTCTGTCCATTCGTCGAGACCGTCTTTTGC
-AGCCTCATTCTACCAACTGCTCCGACTCTTAGTCTGCTTCTCCCAGCGTTATAACAAGAG
-GCATTTTGTCATCCTTAAAACAATAATAAAGAACTCGGAGCACTGATATAATGACTGAAT
-TAGAACCGCTTAAAAATACAACGAATAGATAAGACTATCGGATAAGATCTAATATGTAGT
-GATTAAGCCCTTTATTAATTAATAATAGTTACCCTTTCTGATGTAACGCGACATATTACG
-ATTTAGTGGCACGTCTGAATTGCAAAGCAGATCTCTACCCGATTTTTATTATAAATCCCG
-TATACATCTTGACTTGAGTAATTGTTCATCTTTTTATATCTCTTCGTACTACAAATAATT
-AATATCTCAACCCGTATTGTGTGATTCTAATTACCAACAGAATACGAGGAGGTTTTTGCT
-TAGGGCCATATATAATGAATCTATCTCGTTTATTCGCGGAACCCGAGATAACATTACGAT
-GTAACTATTTTAGAGAACTTAATACAAGAAACATTGCTGATTACTCATAACTAAATGCTT
-GGTAATATATCCTCAGTGCCCCTACCATCTTTTACGCAGGGATGTAATTACTTAGGATTC
-ATTGTGTAAGAATTACAATGAACGATGGATATGAAGGCATGTTGCGAGGTGTTCCTTGGT
-ATGTGAAGTTCGCAGGGCAACAAAAATTTCGCAGAATAGGCCTCAAAGTATTGGTAAAGA
-AGACAACTAATCATCACGAGCTTCTGATATCAATACGAACGAGTCCTGTGATGGATGAAA
-GAAAGTCGTATCGAAAATGTCAAGAGTCTGCCCAATGTAACTTACTTCAAAAAATAACGC
-TTCCGCCAAGTACGTTCGAATAAACGTAATTTTAAAAATACATAAGGGGTGTTAGAAAGT
-AAGCGACGGGATATAAGTTAGACTCAAGATTCCGCCGTAAAACGAGACTGATTCCGAAGA
-TTGTTCGTGGATCTGGTCATGACTTTCACTGAGTAAGGAGTTTCGACATATGTCAATAAA
-CACAAAAATAGAAGCTATTCGATCTGAAAAATATTAGGACAAGAAACTATCTCACGCTAG
-CCCAGAATATTCACTCACCCACGGGCGATACTAAAGCACTATATAGTCGCGTGATTACTA
-TACATATGGTACACATAAGAATCACGATCAGGTTCTCAATTTTCAACAATATATGTTTAT
-TTGCATAGGTAATATTAGGCCTTTAAGAGAAGGATGGGTGAGATACTCCGGGGATGGCGG
-CAATAAAGAAAAACACGATATGAGTAATAGGATCCTAATATCTTGGCGAGAGACTTAAGG
-TACGAATTTTGCGCAATCTATTTTTTACTTGGCCAGAATTCATGTATGGTATAAGTACGA
-ACTTTTTTGATCACTTTCATGGCTACCTGATTAGGATAGTTTGAGGAATTTCCCAAATAT
-ACCGATTTAATATACACTAGGGCTTGTCACTTTGAGTCAGAAAAAGAATATAATTACTTA
-GGGTAATGCTGCATACATATTCTTATATTGCAAAGGTTCTCTGGGTAATCTTGAGCCTTC
-ACGATACCTGGTGAAGTGTT
diff --git a/test/pending/shootout/revcomp.scala-3.scala b/test/pending/shootout/revcomp.scala-3.scala
deleted file mode 100644
index 39a0409127..0000000000
--- a/test/pending/shootout/revcomp.scala-3.scala
+++ /dev/null
@@ -1,147 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy
-*/
-
-import java.io._
-import scala.collection.mutable.Stack
-
-object revcomp {
- def main(args: Array[String]) = {
- val out = new FastaOutputStream(System.out)
- val in = new FastaInputStream(System.in)
-
- out.writeReverseComplement( in.readSequenceStack )
- out.writeReverseComplement( in.readSequenceStack )
- out.writeReverseComplement( in.readSequenceStack )
-
- in.close
- out.close
- }
-}
-
-
-trait FastaByteStream {
- val nl = '\n'.toByte
-
- type Line = Array[Byte]
- type LineStack = Stack[Line]
-}
-
-
-// extend the Java BufferedInputStream class
-
-final class FastaInputStream(in: InputStream)
- extends BufferedInputStream(in) with FastaByteStream {
-
- val gt = '>'.toByte
- val sc = ';'.toByte
-
- def readSequenceStack(): Tuple2[Line,LineStack] = {
- var header: Line = null
- val lines: LineStack = new Stack
-
- var line = readLine()
- while (line != null) {
- val c = line(0)
- if (c == gt){ // '>'
- if (header == null){
- header = line
- } else {
- pos = pos - line.length - 1 // reposition to start of line
- return (header,lines)
- }
- } else {
- if (c != sc) lines push line // ';'
- }
- line = readLine()
- }
- return (header,lines)
- }
-
- def readLine() = {
- var bytes: Line = null
- if (in == null) bytes
- else {
- mark(128) // mark the start of the line
- if (count == 0) read() // fill buffer
-
- var i = markpos
- while (i < count && buf(i) != nl) i = i + 1
-
- if (i >= count){ // line extends past end of buffer
- pos = i; read(); i = pos; // fill buffer again
- while (i < count && buf(i) != nl) i = i + 1
- }
-
- if (i < count){
- bytes = new Array(i - markpos)
- System.arraycopy(buf, markpos, bytes, 0, i - markpos);
- pos = i+1
- }
- }
- bytes
- }
-}
-
-
-// extend the Java BufferedOutputStream class
-
-final class FastaOutputStream(in: OutputStream)
- extends BufferedOutputStream(in) with FastaByteStream {
-
- private val IUB = IUBCodeComplements
-
- private def IUBCodeComplements() = {
- val code = "ABCDGHKMNRSTVWYabcdghkmnrstvwy".getBytes
- val comp = "TVGHCDMKNYSABWRTVGHCDMKNYSABWR".getBytes
- val iub: Array[Byte] = new Array( 'z'.toByte )
-
- for (indexValue <- code zip comp)
- indexValue match { case (i,v) => iub(i) = v }
-
- iub
- }
-
- def writeReverseComplement(sequence: Tuple2[Line,LineStack]) = {
-
- def inplaceComplementReverse(b: Array[Byte]) = {
- var i = 0
- var j = b.length - 1
- while (i < j){
- val swap = b(i)
- b(i) = IUB( b(j) )
- b(j) = IUB( swap )
- i = i + 1
- j = j - 1
- }
- if (i == j) b(i) = IUB( b(i) )
- }
-
- sequence match {
- case (header,lines) => {
-
- write(header); write(nl)
-
- val k = if (lines.isEmpty) 0 else lines.top.length
- val LineLength = 60
- val isSplitLine = k < LineLength
- var isFirstLine = true
-
- while (!lines.isEmpty) {
- val line = lines.pop
- inplaceComplementReverse(line)
-
- if (isSplitLine){
- if (isFirstLine){ write(line); isFirstLine = false }
- else { write(line,0,LineLength-k); write(nl); write(line,LineLength-k,k) }
- }
- else { write(line); write(nl) }
- }
-
- if (isSplitLine && !isFirstLine) write(nl)
- }
- }
- }
-
-}
diff --git a/test/pending/shootout/revcomp.scala-3.scala.runner b/test/pending/shootout/revcomp.scala-3.scala.runner
deleted file mode 100644
index f51d6170c8..0000000000
--- a/test/pending/shootout/revcomp.scala-3.scala.runner
+++ /dev/null
@@ -1,6 +0,0 @@
-object Test extends Application {
- for(n <- List(25000,250000,2500000)) {
- System.setIn(new java.io.FileInputStream(System.getProperty("partest.cwd")+"/revcomp-input"+n+".txt"))
- revcomp.main(Array(n.toString))
- }
-}
diff --git a/test/pending/shootout/sieve.scala b/test/pending/shootout/sieve.scala
deleted file mode 100644
index b494980ee4..0000000000
--- a/test/pending/shootout/sieve.scala
+++ /dev/null
@@ -1,43 +0,0 @@
-/* The Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy (Scala novice)
-*/
-
-object sieve {
- def main(args: Array[String]) = {
- var n = toPositiveInt(args);
- val start = 2;
- val stop = 8192;
- val isPrime = new Array[Boolean](stop+1);
- var count: Int = 0;
-
- while (n>0) {
- count = 0;
-
- for (i <- Iterator.range(start,stop+1))
- isPrime(i)=true;
-
- for (i <- Iterator.range(start,stop+1)) {
- if( isPrime(i) ) {
- var k = i+i;
- while (k<=stop) { isPrime(k)=false; k=k+i; }
- count = count+1;
- }
- }
- n=n-1;
- }
-
- Console.println("Count: " + count);
- }
-
-
- private def toPositiveInt(s: Array[String]) = {
- val i =
- try { Integer.parseInt(s(0)); }
- catch { case _ => 1 }
- if (i>0) i; else 1;
- }
-}
-
-
-
diff --git a/test/pending/shootout/sieve.scala.runner b/test/pending/shootout/sieve.scala.runner
deleted file mode 100644
index 893c3abe90..0000000000
--- a/test/pending/shootout/sieve.scala.runner
+++ /dev/null
@@ -1,3 +0,0 @@
-object Test extends Application {
- for(n <- List(300,600,900,1200)) sieve.main(Array(n.toString))
-}
diff --git a/test/pending/specialized/SI-5005.check b/test/pending/specialized/SI-5005.check
deleted file mode 100644
index 81e8342dad..0000000000
--- a/test/pending/specialized/SI-5005.check
+++ /dev/null
@@ -1,33 +0,0 @@
-[[syntax trees at end of specialize]] // newSource1
-package <empty> {
- class C2[@specialized(scala.Boolean) U >: Nothing <: Any] extends Object {
- def <init>(): C2[U] = {
- C2.super.<init>();
- ()
- };
- def apply(x: U): U = x;
- <specialized> def apply$mcZ$sp(x: Boolean): Boolean = C2.this.apply(x.asInstanceOf[U]()).asInstanceOf[Boolean]()
- };
- class B extends Object {
- def <init>(): B = {
- B.super.<init>();
- ()
- };
- new C2$mcZ$sp().apply$mcZ$sp(true)
- };
- <specialized> class C2$mcZ$sp extends C2[Boolean] {
- <specialized> def <init>(): C2$mcZ$sp = {
- C2$mcZ$sp.super.<init>();
- ()
- };
- @inline final override <specialized> def apply(x: Boolean): Boolean = C2$mcZ$sp.this.apply$mcZ$sp(x);
- @inline final override <specialized> def apply$mcZ$sp(x: Boolean): Boolean = x
- }
-}
-
-[log inliner] Analyzing C2.apply count 0 with 1 blocks
-[log inliner] C2.apply blocks before inlining: 1 (2) after: 1 (2)
-[log inliner] Analyzing C2.apply$mcZ$sp count 0 with 1 blocks
-[log inliner] C2.apply$mcZ$sp blocks before inlining: 1 (8) after: 1 (8)
-[log inliner] Not inlining into apply because it is marked @inline.
-[log inliner] Not inlining into apply$mcZ$sp because it is marked @inline.
diff --git a/test/pending/specialized/SI-5005.scala b/test/pending/specialized/SI-5005.scala
deleted file mode 100644
index 280bf0aa2d..0000000000
--- a/test/pending/specialized/SI-5005.scala
+++ /dev/null
@@ -1,36 +0,0 @@
-import scala.tools.partest._
-import java.io._
-
-
-
-// I think this may be due to a bug in partest where it uses some other version
-// of the scala-library.jar - _hashCode is in line 202 currently, not 212!
-//
-// [partest] testing: [...]/files/specialized/SI-5005.scala [FAILED]
-// [partest] java.lang.NoClassDefFoundError: scala/util/MurmurHash3$
-// [partest] java.lang.NoClassDefFoundError: scala/util/MurmurHash3$
-// [partest] at scala.runtime.ScalaRunTime$._hashCode(ScalaRunTime.scala:212)
-object Test extends DirectTest {
-
- override def extraSettings: String = "-usejavacp -Xprint:spec -optimize -Ylog:inliner -d " + testOutput.path
-
- override def code = """
- class C2[@specialized(Boolean) U]() {
- @inline final def apply(x: U): U = x
- }
-
- class B {
- (new C2[Boolean]())(true)
- }
- """
-
- override def show(): Unit = {
- // redirect err to out, for inliner log
- val prevErr = System.err
- System.setErr(System.out)
- compile()
- System.setErr(prevErr)
- }
-
- override def isDebug = false // so we don't get the newSettings warning
-}
diff --git a/test/pending/t7629-view-bounds-removal.check b/test/pending/t7629-view-bounds-removal.check
deleted file mode 100644
index dc52105eaf..0000000000
--- a/test/pending/t7629-view-bounds-removal.check
+++ /dev/null
@@ -1,9 +0,0 @@
-t7629-view-bounds-removal.scala:2: error: View bounds have been removed. Use an implicit parameter instead.
-Example: Instead of `def f[A <% Int](a: A)` use `def f[A](a: A)(implicit ev: A => Int)`.
- def f[A <% Int](a: A) = null
- ^
-t7629-view-bounds-removal.scala:3: error: View bounds have been removed. Use an implicit parameter instead.
-Example: Instead of `def f[A <% Int](a: A)` use `def f[A](a: A)(implicit ev: A => Int)`.
- def g[C, B <: C, A <% B : Numeric](a: A) = null
- ^
-two errors found
diff --git a/test/pending/t7629-view-bounds-removal.flags b/test/pending/t7629-view-bounds-removal.flags
deleted file mode 100644
index 29f4ede37a..0000000000
--- a/test/pending/t7629-view-bounds-removal.flags
+++ /dev/null
@@ -1 +0,0 @@
--Xfuture
diff --git a/test/pending/t7629-view-bounds-removal.scala b/test/pending/t7629-view-bounds-removal.scala
deleted file mode 100644
index a6ede1fcc3..0000000000
--- a/test/pending/t7629-view-bounds-removal.scala
+++ /dev/null
@@ -1,4 +0,0 @@
-object Test {
- def f[A <% Int](a: A) = null
- def g[C, B <: C, A <% B : Numeric](a: A) = null
-}
diff --git a/test/pending/typetags_typeof_x.check b/test/pending/typetags_typeof_x.check
deleted file mode 100644
index 832a8bc63c..0000000000
--- a/test/pending/typetags_typeof_x.check
+++ /dev/null
@@ -1,8 +0,0 @@
-List[T]
-C
-Int
-List[Any]
-AnyRef{def x: Int}
-Null
-Nothing
-Null
diff --git a/test/pending/typetags_typeof_x.scala b/test/pending/typetags_typeof_x.scala
deleted file mode 100644
index 08be6d4527..0000000000
--- a/test/pending/typetags_typeof_x.scala
+++ /dev/null
@@ -1,14 +0,0 @@
-import scala.reflect.runtime.universe._
-
-object Test extends App {
- def foo[T](x: T) = weakTypeOf(List(x))
- println(foo(2))
- locally { class C; println(weakTypeOf(new C)) }
-
- println(typeOf(2))
- println(typeOf(List(1, "1")))
- println(typeOf(new { def x = 2 }))
- println(typeOf[Null])
- println(typeOf[Nothing])
- println(typeOf(null))
-} \ No newline at end of file
diff --git a/test/scalacheck/concurrent-map.scala b/test/scalacheck/concurrent-map.scala
index 0dae7a98bd..0dae7a98bd 100755..100644
--- a/test/scalacheck/concurrent-map.scala
+++ b/test/scalacheck/concurrent-map.scala
diff --git a/test/support/annotations/NestedAnnotations.java b/test/support/annotations/NestedAnnotations.java
deleted file mode 100644
index c4a98a0af3..0000000000
--- a/test/support/annotations/NestedAnnotations.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package test;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-public class NestedAnnotations {
-
- @OuterAnno(inner=@InnerAnno(name="inner"))
- String field;
-
- @Target({FIELD})
- @Retention(RUNTIME)
- public static @interface InnerAnno {
- String name();
- }
-
- @Target({FIELD})
- @Retention(RUNTIME)
- public static @interface OuterAnno {
- InnerAnno inner();
- }
-}
diff --git a/test/support/annotations/OuterEnum.java b/test/support/annotations/OuterEnum.java
deleted file mode 100644
index 75d3f34223..0000000000
--- a/test/support/annotations/OuterEnum.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package enums;
-
-public class OuterEnum {
- public enum Foo { Bar }
-}
diff --git a/test/support/annotations/OuterTParams.java b/test/support/annotations/OuterTParams.java
deleted file mode 100644
index 1d3db49fcf..0000000000
--- a/test/support/annotations/OuterTParams.java
+++ /dev/null
@@ -1,6 +0,0 @@
-public class OuterTParams<A> {
- class InnerClass {
- // Cannot parse method signature: "()TA;"
- public A method() { return null; }
- }
-}
diff --git a/test/support/annotations/SourceAnnotation.java b/test/support/annotations/SourceAnnotation.java
deleted file mode 100644
index 047751ddfe..0000000000
--- a/test/support/annotations/SourceAnnotation.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package test;
-
-import java.lang.annotation.*;
-
-@Retention(value=RetentionPolicy.RUNTIME)
-public @interface SourceAnnotation {
- public String value();
- public String[] mails() default { "bill.gates@bloodsuckers.com" };
-}
diff --git a/test/support/annotations/mkAnnotationsJar.sh b/test/support/annotations/mkAnnotationsJar.sh
deleted file mode 100755
index 3d69351165..0000000000
--- a/test/support/annotations/mkAnnotationsJar.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-##############################################################################
-# Author : Nikolay Mihaylov
-##############################################################################
-
-##############################################################################
-# variables
-
-OBJDIR=./classes
-
-if [ -z "${JAVA_HOME}" ]; then
- echo "environment variable JAVA_HOME is undefined."
- exit
-fi
-
-JAVAC=${JAVA_HOME}/bin/javac
-JAVAC_OPTIONS="-source 1.5 -target 1.5"
-
-JAR=${JAVA_HOME}/bin/jar
-
-##############################################################################
-# commands
-
-mkdir -p ${OBJDIR}
-${JAVAC} ${JAVAC_OPTIONS} -d ${OBJDIR} SourceAnnotation.java NestedAnnotations.java
-${JAR} cf ../lib/annotations.jar -C ${OBJDIR} .
-rm -rf ${OBJDIR}
diff --git a/test/support/java-tests.txt b/test/support/java-tests.txt
deleted file mode 100644
index e0a3fddab3..0000000000
--- a/test/support/java-tests.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-test/files/buildmanager/t2280
-test/files/buildmanager/t3045
-test/files/buildmanager/t3133
-test/files/jvm/deprecation
-test/files/jvm/t1143-2
-test/files/jvm/t1342
-test/files/jvm/t1464
-test/files/jvm/t2470
-test/files/jvm/t2570
-test/files/jvm/t2585
-test/files/jvm/t3003
-test/files/jvm/t3415
-test/files/jvm/ticket2163
-test/files/jvm/ticket4283
-test/files/jvm/varargs
-test/files/neg/abstract-class-error
-test/files/neg/java-access-neg
-test/files/neg/primitive-sigs-1
-test/files/neg/protected-static-fail
-test/files/neg/t0673
-test/files/neg/t1548
-test/files/neg/t3663
-test/files/neg/t3757
-test/files/neg/t4851
-test/files/pos/chang
-test/files/pos/ilya
-test/files/pos/ilya2
-test/files/pos/java-access-pos
-test/files/pos/javaReadsSigs
-test/files/pos/protected-static
-test/files/pos/raw-map
-test/files/pos/signatures
-test/files/pos/super
-test/files/pos/t0288
-test/files/pos/t0695
-test/files/pos/t1101
-test/files/pos/t1102
-test/files/pos/t1150
-test/files/pos/t1152
-test/files/pos/t1176
-test/files/pos/t1186
-test/files/pos/t1196
-test/files/pos/t1197
-test/files/pos/t1203
-test/files/pos/t1230
-test/files/pos/t1231
-test/files/pos/t1232
-test/files/pos/t1235
-test/files/pos/t1254
-test/files/pos/t1263
-test/files/pos/t1409
-test/files/pos/t1459
-test/files/pos/t1642
-test/files/pos/t1711
-test/files/pos/t1745
-test/files/pos/t1751
-test/files/pos/t1782
-test/files/pos/t1836
-test/files/pos/t1840
-test/files/pos/t1937
-test/files/pos/t2377
-test/files/pos/t2409
-test/files/pos/t2413
-test/files/pos/t2433
-test/files/pos/t2464
-test/files/pos/t2569
-test/files/pos/t2868
-test/files/pos/t294
-test/files/pos/t2940
-test/files/pos/t2956
-test/files/pos/t3249
-test/files/pos/t3349
-test/files/pos/t3404
-test/files/pos/t3429
-test/files/pos/t3486
-test/files/pos/t3521
-test/files/pos/t3567
-test/files/pos/t3622
-test/files/pos/t3642
-test/files/pos/t3938
-test/files/pos/t3946
-test/files/pos/t4402
-test/files/pos/t4603
-test/files/pos/t4737
-test/files/pos/t5644
-test/files/pos/t5703
-test/files/run/inner-parse
-test/files/run/t1430
-test/files/run/t2296a
-test/files/run/t2296b
-test/files/run/t3452a
-test/files/run/t3452b
-test/files/run/t3897
-test/files/run/t4119
-test/files/run/t4238
-test/files/run/t4317
-test/files/run/t4891
diff --git a/tools/rm-orphan-checkfiles b/tools/rm-orphan-checkfiles
index ca0a3f2938..5bf95dda0a 100755
--- a/tools/rm-orphan-checkfiles
+++ b/tools/rm-orphan-checkfiles
@@ -6,13 +6,13 @@
shopt -s nullglob
echo "Scanning for orphan check files..."
-for f in $(ls -1d test/{files,pending,disabled}/{jvm,neg,pos,run}/*.check); do
+for f in $(ls -1d test/files/{jvm,neg,pos,run}/*.check); do
base=${f%%.check}
[[ -d $base ]] || [[ -f $base.scala ]] || git rm -f $f
done
echo "Scanning for orphan flags files..."
-for f in $(ls -1d test/{files,pending,disabled}/{jvm,neg,pos,run}/*.flags); do
+for f in $(ls -1d test/files/{jvm,neg,pos,run}/*.flags); do
base=${f%%.flags}
[[ -d $base ]] || [[ -f $base.scala ]] || git rm -f $f
done
diff --git a/versions.properties b/versions.properties
index f767dfab7b..5b58ebeaa4 100644
--- a/versions.properties
+++ b/versions.properties
@@ -1,27 +1,27 @@
-# Scala version used for bootstrapping. (This has no impact on the
-# final classfiles, since compiler and library are built first using
-# starr, then rebuilt using themselves.)
+# Scala version used for bootstrapping (see README.md)
starr.version=2.12.1
-# These are the versions of the modules that go with this release.
-# These properties are used during PR validation and in dbuild builds.
-
-# The scala.binary.version determines how modules are resolved. For example, it
-# determines which partest artifact is being used for running the tests.
-# It has to be set in the following way:
-# - After 2.x.0 is released, the binary version is 2.x.
-# - During milestones and RCs, modules are cross-built against the full version.
-# So the value is the full version (e.g. 2.12.0-M2).
+# The scala.binary.version determines how modules are resolved. It is set as follows:
+# - After 2.x.0 is released, the binary version is 2.x
+# - If the starr is a milestone or RC, the full starr version, e.g., 2.12.0-M2
+#
+# For local development during pre-releases, we use existing module binaries with the hope
+# that binary compatibility does not break. For example, after releasing 2.12.0-M1, we continue
+# using scala-partest_2.12.0-M1 until releasing M2. Manual intervention is necessary for changes
+# that break binary compatibility, see for example PR #5003.
scala.binary.version=2.12
-# external modules shipped with distribution, as specified by scala-library-all's pom
+# These are the versions of the modules that go with this release.
+# Artifact dependencies:
+# - scala-compiler: scala-xml, jline (% "optional")
+# - scala-library-all: scala-xml, scala-parser-combinators, scala-swing
+# Other usages:
+# - scala-asm: jar content included in scala-compiler
+# - jline: shaded with JarJar and included in scala-compiler
+# - partest: used for running the tests
scala-xml.version.number=1.0.6
scala-parser-combinators.version.number=1.0.5
scala-swing.version.number=2.0.0
-scala-swing.version.osgi=2.0.0
-jline.version=2.14.3
-# this one is shaded and embedded in scala-compiler.jar
-scala-asm.version=5.1.0-scala-2
-
-# external modules, used internally (not shipped)
partest.version.number=1.1.0
+scala-asm.version=5.1.0-scala-2
+jline.version=2.14.3