From f677c469bd2a2a85b8242a06f8b41113c35b7979 Mon Sep 17 00:00:00 2001 From: dubochet Date: Mon, 19 Dec 2005 13:49:03 +0000 Subject: [PATCH] Switching to the new build system and to the new build system. This is a MAJOR commit, so be careful when updating. git-svn-id: http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk@5390 5e8d7ff9-d8ef-0310-90f0-a4852d11357a --- README | 59 + VERSION | 9 - build.readme | 114 -- build.xml | 1208 +++++++---------- config/build.TEMPLATE.properties | 34 - config/build.base.properties | 16 - config/build.default.properties | 133 -- config/excludes/nsc.nslib.excludes | 10 - config/excludes/nsc.nstools.excludes | 7 - config/excludes/nsc.osc-nstools.excludes | 7 - config/izpack/images/Splash.png | Bin 153467 -> 0 bytes config/izpack/images/install.png | Bin 130263 -> 0 bytes config/izpack/install-nsc.xml | 111 -- config/izpack/izpack_process.xml | 44 - config/izpack/izpack_scala.xml | 96 -- config/izpack/izpack_shortcut.xml | 42 - config/izpack/locales/INFO_de.html | 23 - config/izpack/locales/INFO_en.html | 23 - config/izpack/locales/INFO_fr.html | 23 - config/izpack/locales/LICENSE_de.html | 76 -- config/izpack/locales/LICENSE_en.html | 68 - config/izpack/locales/LICENSE_fr.html | 82 -- .../izpack/registry/bin/ICE_JNIRegistry.dll | Bin 65536 -> 0 bytes config/izpack/registry/bin/readme.txt | 50 - config/izpack/registry/bin/registry.jar | Bin 26435 -> 0 bytes config/izpack/registry/bin/setenv.jar | Bin 2052 -> 0 bytes config/izpack/registry/src/MANIFEST.MF | 3 - config/izpack/registry/src/Main.java | 120 -- config/izpack/targets/path_macosx.txt | 1 - config/izpack/targets/path_unix.txt | 1 - newsources/scala/CaseClass.scala | 32 - sources/bin/izpack.symlink.tmpl | 11 - sources/msil/scala_part2.il.diff.tmpl | 21 - sources/scala/Array.cs | 35 - sources/scala/Array.java | 29 - sources/scala/MatchError.cs | 62 - sources/scala/MatchError.java | 52 - sources/scala/ScalaObject.java | 27 - sources/scala/Type.java | 160 --- sources/scala/runtime/RunTime.cs | 513 ------- sources/scala/runtime/RunTime.java | 473 ------- sources/scala/runtime/types/ClassType.java | 94 -- sources/scala/runtime/types/CompoundType.java | 109 -- .../scala/runtime/types/JavaClassType.java | 53 - .../scala/runtime/types/JavaRefArrayType.java | 80 -- .../scala/runtime/types/ScalaClassType.java | 271 ---- sources/scala/runtime/types/SingleType.java | 52 - sources/scala/runtime/types/SpecialType.java | 42 - sources/scala/runtime/types/Statistics.java | 155 --- sources/scala/runtime/types/TypeAll.java | 34 - sources/scala/runtime/types/TypeAllRef.java | 35 - sources/scala/runtime/types/TypeAny.java | 35 - sources/scala/runtime/types/TypeAnyVal.java | 34 - sources/scala/runtime/types/TypeBoolean.java | 37 - sources/scala/runtime/types/TypeByte.java | 50 - sources/scala/runtime/types/TypeChar.java | 50 - .../scala/runtime/types/TypeConstructor.java | 157 --- sources/scala/runtime/types/TypeDouble.java | 49 - sources/scala/runtime/types/TypeFloat.java | 49 - sources/scala/runtime/types/TypeInt.java | 50 - sources/scala/runtime/types/TypeLong.java | 49 - sources/scala/runtime/types/TypeShort.java | 49 - sources/scala/runtime/types/TypeUnit.java | 37 - sources/scala/runtime/types/ValueType.java | 38 - .../scala/tools/nsc/CompilationUnits.scala | 0 .../scala/tools/nsc/CompilerCommand.scala | 0 .../scala/tools/nsc/CompilerRun.scala | 0 .../compiler}/scala/tools/nsc/EvalLoop.scala | 0 .../scala/tools/nsc/FatalError.scala | 0 .../compiler}/scala/tools/nsc/Global.scala | 0 .../scala/tools/nsc/Interpreter.scala | 0 .../compiler}/scala/tools/nsc/Main.scala | 0 .../scala/tools/nsc/MainInterpreter.scala | 0 .../scala/tools/nsc/MainTokenMetric.scala | 0 .../compiler}/scala/tools/nsc/NoPhase.scala | 0 .../compiler}/scala/tools/nsc/Phase.scala | 0 .../compiler}/scala/tools/nsc/Settings.scala | 0 .../scala/tools/nsc/SubComponent.scala | 0 .../compiler}/scala/tools/nsc/ant/NSC.scala | 0 .../scala/tools/nsc/ast/TreeBrowsers.scala | 0 .../scala/tools/nsc/ast/TreeGen.scala | 0 .../scala/tools/nsc/ast/TreeInfo.scala | 0 .../scala/tools/nsc/ast/TreePrinters.scala | 0 .../compiler}/scala/tools/nsc/ast/Trees.scala | 0 .../tools/nsc/ast/parser/MarkupParsers.scala | 0 .../scala/tools/nsc/ast/parser/Parsers.scala | 0 .../scala/tools/nsc/ast/parser/Scanners.scala | 0 .../nsc/ast/parser/SymbolicXMLBuilder.scala | 0 .../tools/nsc/ast/parser/SyntaxAnalyzer.scala | 0 .../scala/tools/nsc/ast/parser/Tokens.scala | 0 .../tools/nsc/ast/parser/TreeBuilder.scala | 0 .../tools/nsc/backend/ScalaPrimitives.scala | 0 .../tools/nsc/backend/WorklistAlgorithm.scala | 0 .../tools/nsc/backend/icode/BasicBlocks.scala | 0 .../nsc/backend/icode/CheckerError.scala | 0 .../tools/nsc/backend/icode/Checkers.scala | 0 .../nsc/backend/icode/ExceptionHandlers.scala | 0 .../tools/nsc/backend/icode/GenICode.scala | 0 .../tools/nsc/backend/icode/ICodes.scala | 0 .../tools/nsc/backend/icode/Linearizers.scala | 0 .../tools/nsc/backend/icode/Members.scala | 0 .../tools/nsc/backend/icode/Opcodes.scala | 0 .../tools/nsc/backend/icode/Primitives.scala | 0 .../tools/nsc/backend/icode/Printers.scala | 0 .../tools/nsc/backend/icode/TypeKinds.scala | 0 .../tools/nsc/backend/icode/TypeStacks.scala | 0 .../scala/tools/nsc/backend/jvm/GenJVM.scala | 0 .../nsc/matching/AlgebraicMatchers.scala | 0 .../scala/tools/nsc/matching/Autom2.scala | 0 .../tools/nsc/matching/BerrySethis.scala | 0 .../tools/nsc/matching/CodeFactory.scala | 0 .../tools/nsc/matching/DetWordAutoms.scala | 0 .../tools/nsc/matching/LeftTracers.scala | 0 .../tools/nsc/matching/MatcherLabels.scala | 0 .../tools/nsc/matching/NondetWordAutoms.scala | 0 .../scala/tools/nsc/matching/Npair.scala | 0 .../tools/nsc/matching/PatternMatchers.scala | 0 .../nsc/matching/PatternNodeCreator.scala | 0 .../tools/nsc/matching/PatternNodes.scala | 0 .../tools/nsc/matching/RightTracers.scala | 0 .../tools/nsc/matching/SequenceMatchers.scala | 0 .../nsc/matching/StateSetComparator.scala | 0 .../tools/nsc/matching/TransMatcher.scala | 0 .../scala/tools/nsc/matching/WordAutoms.scala | 0 .../scala/tools/nsc/models/Models.scala.xxx | 0 .../tools/nsc/models/SemanticTokens.scala | 0 .../scala/tools/nsc/models/Signatures.scala | 0 .../nsc/reporters/AbstractReporter.scala | 0 .../tools/nsc/reporters/ConsoleReporter.scala | 0 .../scala/tools/nsc/reporters/Reporter.scala | 0 .../tools/nsc/reporters/ReporterTimer.scala | 0 .../tools/nsc/reporters/StoreReporter.scala | 0 .../scala/tools/nsc/symtab/Constants.scala | 0 .../scala/tools/nsc/symtab/Definitions.scala | 0 .../scala/tools/nsc/symtab/Flags.scala | 0 .../tools/nsc/symtab/InfoTransformers.scala | 0 .../scala/tools/nsc/symtab/Names.scala | 0 .../scala/tools/nsc/symtab/Scopes.scala | 0 .../scala/tools/nsc/symtab/StdNames.scala | 0 .../tools/nsc/symtab/SymbolLoaders.scala | 0 .../scala/tools/nsc/symtab/SymbolTable.scala | 0 .../scala/tools/nsc/symtab/Symbols.scala | 0 .../scala/tools/nsc/symtab/Types.scala | 0 .../symtab/classfile/ClassfileConstants.scala | 0 .../symtab/classfile/ClassfileParser.scala | 0 .../nsc/symtab/classfile/MetaParser.scala | 0 .../nsc/symtab/classfile/PickleBuffer.scala | 0 .../nsc/symtab/classfile/PickleFormat.scala | 0 .../tools/nsc/symtab/classfile/Pickler.scala | 0 .../symtab/classfile/SymblfileParser.scala | 0 .../nsc/symtab/classfile/UnPickler.scala | 0 .../tools/nsc/transform/AddInterfaces.scala | 0 .../tools/nsc/transform/Constructors.scala | 0 .../scala/tools/nsc/transform/Erasure.scala | 0 .../tools/nsc/transform/ExplicitOuter.scala | 0 .../scala/tools/nsc/transform/Flatten.scala | 0 .../tools/nsc/transform/InfoTransform.scala | 0 .../tools/nsc/transform/LambdaLift.scala | 0 .../scala/tools/nsc/transform/Mixin.scala | 0 .../tools/nsc/transform/OverridingPairs.scala | 0 .../tools/nsc/transform/SampleTransform.scala | 0 .../scala/tools/nsc/transform/TailCalls.scala | 0 .../scala/tools/nsc/transform/Transform.scala | 0 .../scala/tools/nsc/transform/UnCurry.scala | 0 .../tools/nsc/typechecker/Analyzer.scala | 0 .../tools/nsc/typechecker/Codification.scala | 0 .../nsc/typechecker/ConstantFolder.scala | 0 .../tools/nsc/typechecker/Contexts.scala | 0 .../tools/nsc/typechecker/EtaExpansion.scala | 0 .../scala/tools/nsc/typechecker/Infer.scala | 0 .../scala/tools/nsc/typechecker/Namers.scala | 0 .../tools/nsc/typechecker/RefChecks.scala | 0 .../nsc/typechecker/SuperAccessors.scala | 0 .../nsc/typechecker/SyntheticMethods.scala | 0 .../tools/nsc/typechecker/TreeCheckers.scala | 0 .../scala/tools/nsc/typechecker/Typers.scala | 0 .../tools/nsc/typechecker/Variances.scala | 0 .../tools/nsc/util/CharArrayReader.scala | 0 .../tools/nsc/util/FreshNameCreator.scala | 0 .../scala/tools/nsc/util/HashSet.scala | 0 .../scala/tools/nsc/util/LinkedList.scala | 0 .../scala/tools/nsc/util/ListBuffer.scala | 0 .../tools/nsc/util/NameTransformer.scala | 0 .../scala/tools/nsc/util/Position.scala | 0 .../compiler}/scala/tools/nsc/util/Set.scala | 0 .../scala/tools/nsc/util/ShowPickled.scala | 0 .../scala/tools/nsc/util/SourceFile.scala | 0 .../scala/tools/nsc/util/Statistics.scala | 0 .../scala/tools/nsc/util/TreeSet.scala | 0 .../scala/tools/util/AbstractFile.java | 0 .../scala/tools/util/AbstractFileReader.java | 0 .../scala/tools/util/AbstractReporter.java | 0 .../scala/tools/util/AbstractTimer.java | 0 .../scala/tools/util/ByteArrayFile.java | 0 .../scala/tools/util/CharArrayFile.java | 0 .../compiler}/scala/tools/util/ClassPath.java | 0 .../scala/tools/util/ConsoleReporter.java | 0 .../scala/tools/util/DirectoryPath.java | 0 .../scala/tools/util/DummyTimer.java | 0 .../scala/tools/util/EmptyIterator.java | 0 .../compiler}/scala/tools/util/PlainFile.java | 0 .../compiler}/scala/tools/util/Position.java | 0 .../compiler}/scala/tools/util/Reporter.java | 0 .../scala/tools/util/ReporterTimer.java | 0 .../scala/tools/util/SourceFile.java | 0 .../scala/tools/util/SourceReader.java | 0 .../scala/tools/util/StringBufferWriter.java | 0 .../compiler}/scala/tools/util/Timer.java | 0 .../compiler}/scala/tools/util/UTF8Codec.java | 0 .../scala/tools/util/VirtualDirectory.java | 0 .../scala/tools/util/VirtualFile.java | 0 .../scala/tools/util/ZipArchive.java | 0 .../scala/tools/util/debug/AbortError.java | 0 .../scala/tools/util/debug/ArrayDebugger.java | 0 .../scala/tools/util/debug/Debug.java | 0 .../scala/tools/util/debug/Debugger.java | 0 .../tools/util/debug/ObjectDebugger.java | 0 .../tools/util/debug/ThrowableDebugger.java | 0 .../tools/util/debug/ToStringDebugger.java | 0 .../bin => src/exec}/nscala-tool.win.tmpl | 0 {sources/bin => src/exec}/nscala.unix.tmpl | 19 +- {sources/bin => src/exec}/nscala.win.tmpl | 0 {sources => src/library}/scala/All$.java | 0 {sources => src/library}/scala/AllRef$.java | 0 {sources => src/library}/scala/AnyVal.cs | 2 +- {sources => src/library}/scala/AnyVal.java | 0 .../library}/scala/Application.scala | 2 +- {newsources => src/library}/scala/Array.scala | 0 .../library}/scala/Attribute.scala | 2 +- {sources => src/library}/scala/Boolean.cs | 2 +- {sources => src/library}/scala/Boolean.java | 0 .../library}/scala/BufferedIterator.scala | 2 +- {sources => src/library}/scala/Byte.cs | 2 +- {sources => src/library}/scala/Byte.java | 0 .../library}/scala/CaseClass.scala | 2 +- {sources => src/library}/scala/Cell.scala | 2 +- {sources => src/library}/scala/Char.cs | 2 +- {sources => src/library}/scala/Char.java | 0 {sources => src/library}/scala/Console.scala | 2 +- {sources => src/library}/scala/Double.cs | 2 +- {sources => src/library}/scala/Double.java | 0 .../library}/scala/Enumeration.scala | 2 +- {sources => src/library}/scala/Float.cs | 2 +- {sources => src/library}/scala/Float.java | 0 .../library}/scala/Function0.scala | 0 .../library}/scala/Function1.scala | 0 .../library}/scala/Function2.scala | 0 .../library}/scala/Function3.scala | 0 .../library}/scala/Function4.scala | 0 .../library}/scala/Function5.scala | 0 .../library}/scala/Function6.scala | 0 .../library}/scala/Function7.scala | 0 .../library}/scala/Function8.scala | 0 .../library}/scala/Function9.scala | 0 {sources => src/library}/scala/Int.cs | 2 +- {sources => src/library}/scala/Int.java | 0 {sources => src/library}/scala/Iterable.scala | 2 +- .../library}/scala/IterableProxy.scala | 2 +- {sources => src/library}/scala/Iterator.scala | 2 +- {sources => src/library}/scala/List.scala | 2 +- {sources => src/library}/scala/Long.cs | 2 +- {sources => src/library}/scala/Long.java | 0 .../library}/scala/MatchError.scala | 0 {sources => src/library}/scala/None.scala | 2 +- {sources => src/library}/scala/Option.scala | 2 +- {sources => src/library}/scala/Ordered.scala | 2 +- .../library}/scala/PartialFunction.scala | 2 +- .../library}/scala/PartiallyOrdered.scala | 2 +- {sources => src/library}/scala/Predef.scala | 2 +- {sources => src/library}/scala/Proxy.scala | 2 +- {sources => src/library}/scala/Ref.cs | 2 +- {sources => src/library}/scala/Ref.java | 0 .../library}/scala/ScalaObject.scala | 0 {sources => src/library}/scala/Seq.scala | 2 +- {sources => src/library}/scala/SeqProxy.scala | 2 +- .../library}/scala/SerialVersionUID.scala | 2 +- {sources => src/library}/scala/Short.cs | 2 +- {sources => src/library}/scala/Short.java | 0 {sources => src/library}/scala/Some.scala | 2 +- {sources => src/library}/scala/Stream.scala | 2 +- {sources => src/library}/scala/Symbol.scala | 2 +- {sources => src/library}/scala/Tuple1.scala | 0 {sources => src/library}/scala/Tuple2.scala | 0 {sources => src/library}/scala/Tuple3.scala | 0 {sources => src/library}/scala/Tuple4.scala | 0 {sources => src/library}/scala/Tuple5.scala | 0 {sources => src/library}/scala/Tuple6.scala | 0 {sources => src/library}/scala/Tuple7.scala | 0 {sources => src/library}/scala/Tuple8.scala | 0 {sources => src/library}/scala/Tuple9.scala | 0 {sources => src/library}/scala/Unit.cs | 2 +- {sources => src/library}/scala/Unit.java | 0 {sources => src/library}/scala/_trait_.scala | 2 +- .../library}/scala/cloneable.scala | 2 +- .../library}/scala/collection/BitSet.scala | 0 .../library}/scala/collection/Map.scala | 0 .../library}/scala/collection/MapProxy.scala | 0 .../library}/scala/collection/Set.scala | 0 .../library}/scala/collection/SetProxy.scala | 0 .../scala/collection/immutable/BitSet.scala | 0 .../scala/collection/immutable/ListMap.scala | 0 .../scala/collection/immutable/ListSet.scala | 0 .../scala/collection/immutable/Map.scala | 0 .../scala/collection/immutable/Queue.scala | 0 .../scala/collection/immutable/Set.scala | 0 .../scala/collection/immutable/Stack.scala | 0 .../scala/collection/immutable/Tree.scala | 0 .../scala/collection/immutable/TreeMap.scala | 0 .../scala/collection/immutable/TreeSet.scala | 0 .../collection/mutable/ArrayBuffer.scala | 0 .../scala/collection/mutable/BitSet.scala | 0 .../scala/collection/mutable/Buffer.scala | 0 .../collection/mutable/BufferProxy.scala | 0 .../collection/mutable/DefaultMapModel.scala | 0 .../collection/mutable/DoubleLinkedList.scala | 0 .../scala/collection/mutable/HashMap.scala | 0 .../scala/collection/mutable/HashSet.scala | 0 .../scala/collection/mutable/HashTable.scala | 0 .../scala/collection/mutable/History.scala | 0 .../mutable/ImmutableMapAdaptor.scala | 0 .../mutable/ImmutableSetAdaptor.scala | 0 .../collection/mutable/JavaMapAdaptor.scala | 0 .../collection/mutable/JavaSetAdaptor.scala | 0 .../scala/collection/mutable/LinkedList.scala | 0 .../scala/collection/mutable/ListBuffer.scala | 0 .../scala/collection/mutable/Location.scala | 0 .../scala/collection/mutable/Map.scala | 0 .../scala/collection/mutable/MapProxy.scala | 0 .../scala/collection/mutable/Message.scala | 0 .../scala/collection/mutable/MultiMap.scala | 0 .../collection/mutable/MutableList.scala | 0 .../collection/mutable/ObservableBuffer.scala | 0 .../collection/mutable/ObservableMap.scala | 0 .../collection/mutable/ObservableSet.scala | 0 .../collection/mutable/PriorityQueue.scala | 0 .../mutable/PriorityQueueProxy.scala | 0 .../scala/collection/mutable/Publisher.scala | 0 .../scala/collection/mutable/Queue.scala | 0 .../scala/collection/mutable/QueueProxy.scala | 0 .../collection/mutable/ResizableArray.scala | 0 .../mutable/RevertableHistory.scala | 0 .../scala/collection/mutable/Scriptable.scala | 0 .../scala/collection/mutable/Set.scala | 0 .../scala/collection/mutable/SetProxy.scala | 0 .../collection/mutable/SingleLinkedList.scala | 0 .../scala/collection/mutable/Stack.scala | 0 .../scala/collection/mutable/StackProxy.scala | 0 .../scala/collection/mutable/Subscriber.scala | 0 .../mutable/SynchronizedBuffer.scala | 0 .../collection/mutable/SynchronizedMap.scala | 0 .../mutable/SynchronizedPriorityQueue.scala | 0 .../mutable/SynchronizedQueue.scala | 0 .../collection/mutable/SynchronizedSet.scala | 0 .../mutable/SynchronizedStack.scala | 0 .../scala/collection/mutable/Undoable.scala | 0 .../library}/scala/concurrent/Actor.scala | 0 .../library}/scala/concurrent/Channel.scala | 0 .../library}/scala/concurrent/Lock.scala | 0 .../library}/scala/concurrent/MailBox.scala | 0 .../scala/concurrent/NameServer.scala | 0 .../library}/scala/concurrent/Process.scala | 0 .../scala/concurrent/SyncChannel.scala | 0 .../library}/scala/concurrent/SyncVar.scala | 0 .../library}/scala/concurrent/TIMEOUT.scala | 0 .../library}/scala/concurrent/jolib.scala | 0 .../library}/scala/concurrent/ops.scala | 0 .../library}/scala/concurrent/pilib.scala | 0 .../library}/scala/dbc/DataType.scala | 0 .../library}/scala/dbc/Database.scala | 0 .../library}/scala/dbc/Syntax.scala | 0 .../library}/scala/dbc/Utilities.scala | 0 .../library}/scala/dbc/Value.scala | 0 .../library}/scala/dbc/Vendor.scala | 0 .../dbc/datatype/ApproximateNumeric.scala | 0 .../library}/scala/dbc/datatype/Boolean.scala | 0 .../scala/dbc/datatype/Character.scala | 0 .../dbc/datatype/CharacterLargeObject.scala | 0 .../scala/dbc/datatype/CharacterString.scala | 0 .../scala/dbc/datatype/CharacterVarying.scala | 0 .../scala/dbc/datatype/ExactNumeric.scala | 0 .../library}/scala/dbc/datatype/Factory.scala | 0 .../library}/scala/dbc/datatype/Numeric.scala | 0 .../library}/scala/dbc/datatype/String.scala | 0 .../library}/scala/dbc/datatype/Unknown.scala | 0 .../dbc/exception/IncompatibleSchema.scala | 0 .../dbc/exception/UnsupportedFeature.scala | 0 .../library}/scala/dbc/result/Field.scala | 0 .../scala/dbc/result/FieldMetadata.scala | 0 .../library}/scala/dbc/result/Relation.scala | 0 .../library}/scala/dbc/result/Status.scala | 0 .../library}/scala/dbc/result/Tuple.scala | 0 .../scala/dbc/statement/AccessMode.scala | 0 .../scala/dbc/statement/DerivedColumn.scala | 0 .../scala/dbc/statement/Expression.scala | 0 .../library}/scala/dbc/statement/Insert.scala | 0 .../scala/dbc/statement/InsertionData.scala | 0 .../scala/dbc/statement/IsolationLevel.scala | 0 .../scala/dbc/statement/JoinType.scala | 0 .../scala/dbc/statement/Jointure.scala | 0 .../scala/dbc/statement/Relation.scala | 2 - .../library}/scala/dbc/statement/Select.scala | 0 .../scala/dbc/statement/SetClause.scala | 0 .../scala/dbc/statement/SetQuantifier.scala | 0 .../scala/dbc/statement/Statement.scala | 0 .../library}/scala/dbc/statement/Status.scala | 0 .../library}/scala/dbc/statement/Table.scala | 0 .../scala/dbc/statement/Transaction.scala | 0 .../library}/scala/dbc/statement/Update.scala | 0 .../dbc/statement/expression/Aggregate.scala | 0 .../statement/expression/BinaryOperator.scala | 0 .../dbc/statement/expression/Constant.scala | 0 .../dbc/statement/expression/Default.scala | 0 .../dbc/statement/expression/Field.scala | 0 .../statement/expression/FunctionCall.scala | 0 .../dbc/statement/expression/Select.scala | 0 .../statement/expression/SetFunction.scala | 0 .../dbc/statement/expression/TypeCast.scala | 0 .../statement/expression/UnaryOperator.scala | 0 .../scala/dbc/syntax/DataTypeUtil.scala | 0 .../library}/scala/dbc/syntax/Database.scala | 0 .../library}/scala/dbc/syntax/Statement.scala | 0 .../dbc/syntax/StatementExpression.scala | 0 .../scala/dbc/value/ApproximateNumeric.scala | 0 .../library}/scala/dbc/value/Boolean.scala | 0 .../library}/scala/dbc/value/Character.scala | 0 .../dbc/value/CharacterLargeObject.scala | 0 .../scala/dbc/value/CharacterVarying.scala | 0 .../library}/scala/dbc/value/Conversion.scala | 0 .../scala/dbc/value/ExactNumeric.scala | 0 .../library}/scala/dbc/value/Factory.scala | 0 .../library}/scala/dbc/value/Unknown.scala | 0 .../scala/dbc/vendor/PostgreSQL.scala | 0 .../library}/scala/io/Position.scala | 0 .../library}/scala/io/Source.scala | 0 .../library}/scala/mobile/Code.scala | 0 .../library}/scala/mobile/Location.scala | 0 .../library}/scala/reflect/Code.scala | 0 .../library}/scala/reflect/Print.scala | 0 .../library}/scala/reflect/Symbol.scala | 0 .../library}/scala/reflect/Type.scala | 0 .../library}/scala/reflect/TypedCode.scala | 0 {sources => src/library}/scala/remote.scala | 0 .../scala/runtime/AtomicReference.java | 0 .../library}/scala/runtime/BooleanRef.java | 0 .../scala/runtime/BoxedAnyArray.scala | 0 .../library}/scala/runtime/BoxedArray.scala | 0 .../library}/scala/runtime/BoxedBoolean.java | 0 .../scala/runtime/BoxedBooleanArray.scala | 0 .../library}/scala/runtime/BoxedByte.java | 0 .../scala/runtime/BoxedByteArray.scala | 0 .../library}/scala/runtime/BoxedChar.java | 0 .../scala/runtime/BoxedCharArray.scala | 0 .../library}/scala/runtime/BoxedDouble.java | 0 .../scala/runtime/BoxedDoubleArray.scala | 0 .../library}/scala/runtime/BoxedFloat.java | 0 .../scala/runtime/BoxedFloatArray.scala | 0 .../library}/scala/runtime/BoxedInt.java | 0 .../scala/runtime/BoxedIntArray.scala | 0 .../library}/scala/runtime/BoxedLong.java | 0 .../scala/runtime/BoxedLongArray.scala | 0 .../library}/scala/runtime/BoxedNumber.java | 0 .../scala/runtime/BoxedObjectArray.scala | 0 .../library}/scala/runtime/BoxedShort.java | 0 .../scala/runtime/BoxedShortArray.scala | 0 .../library}/scala/runtime/BoxedUnit.java | 0 .../library}/scala/runtime/ByteRef.java | 0 .../library}/scala/runtime/CharRef.java | 0 .../library}/scala/runtime/DoubleRef.java | 0 .../scala/runtime/ExceptionHandling.cs | 33 +- .../scala/runtime/ExceptionHandling.java | 22 +- .../library}/scala/runtime/FNV_Hash.java | 0 .../library}/scala/runtime/FloatRef.java | 0 .../library}/scala/runtime/IOMap.java | 0 .../library}/scala/runtime/IntRef.java | 0 .../scala/runtime/InterpreterSupport.java | 0 .../library}/scala/runtime/LongRef.java | 0 .../library}/scala/runtime/MetaAttribute.cs | 0 .../library}/scala/runtime/ObjectRef.java | 0 .../library}/scala/runtime/ScalaRunTime.scala | 4 +- .../library}/scala/runtime/ShortRef.java | 0 .../library}/scala/runtime/SymtabAttribute.cs | 0 .../library}/scala/runtime/compat/Math.scala | 0 .../scala/runtime/compat/Platform.scala | 0 .../scala/runtime/compat/StringBuilder.scala | 0 .../scala/runtime/matching/Address.scala | 0 .../scala/runtime/matching/NonTerm.scala | 0 .../scala/runtime/matching/PatternTests.scala | 0 .../scala/runtime/matching/Rule.scala | 0 .../scala/runtime/matching/TestAlphabet.scala | 0 .../library}/scala/serializable.scala | 0 .../library}/scala/testing/Benchmark.scala | 0 .../library}/scala/testing/SUnit.scala | 0 .../library}/scala/testing/UnitTest.scala | 0 .../library}/scala/text/Document.scala | 0 .../library}/scala/transient.scala | 2 +- .../scala/util/automata/BaseBerrySethi.scala | 0 .../scala/util/automata/DetWordAutom.scala | 0 .../scala/util/automata/Inclusion.scala | 0 .../scala/util/automata/NondetWordAutom.scala | 0 .../util/automata/SubsetConstruction.scala | 0 .../scala/util/automata/WordBerrySethi.scala | 0 .../scala/util/grammar/HedgeRHS.scala | 0 .../library}/scala/util/grammar/TreeRHS.scala | 0 .../scala/util/logging/ConsoleLogger.scala | 0 .../library}/scala/util/logging/Logged.scala | 0 .../parsing/CharInputStreamIterator.scala | 0 .../library}/scala/util/parsing/Parsers.scala | 0 .../scala/util/parsing/SimpleTokenizer.scala | 0 .../library}/scala/util/regexp/Base.scala | 0 .../scala/util/regexp/PointedHedgeExp.scala | 0 .../scala/util/regexp/SyntaxError.scala | 0 .../library}/scala/util/regexp/WordExp.scala | 0 {sources => src/library}/scala/volatile.scala | 2 +- {sources => src/library}/scala/xml/Atom.scala | 0 .../library}/scala/xml/Comment.scala | 0 .../library}/scala/xml/Document.scala | 0 {sources => src/library}/scala/xml/Elem.scala | 0 .../library}/scala/xml/EntityRef.scala | 0 .../xml/MalformedAttributeException.scala | 0 .../library}/scala/xml/MetaData.scala | 0 .../library}/scala/xml/Molecule.scala | 0 .../library}/scala/xml/NamespaceBinding.scala | 0 {sources => src/library}/scala/xml/Node.scala | 0 .../library}/scala/xml/NodeBuffer.scala | 0 .../library}/scala/xml/NodeSeq.scala | 0 .../library}/scala/xml/NodeTraverser.scala | 0 {sources => src/library}/scala/xml/Null.scala | 0 .../library}/scala/xml/Parsing.scala | 0 .../scala/xml/PrefixedAttribute.scala | 0 .../library}/scala/xml/PrettyPrinter.scala | 0 .../library}/scala/xml/ProcInstr.scala | 0 .../library}/scala/xml/SpecialNode.scala | 0 {sources => src/library}/scala/xml/Text.scala | 0 .../library}/scala/xml/TextBuffer.scala | 0 .../library}/scala/xml/TopScope.scala | 0 .../library}/scala/xml/TypeSymbol.scala | 0 .../scala/xml/UnprefixedAttribute.scala | 0 .../library}/scala/xml/Utility.scala | 0 {sources => src/library}/scala/xml/XML.scala | 0 .../library}/scala/xml/dtd/ContentModel.scala | 0 .../scala/xml/dtd/ContentModelParser.scala | 0 .../library}/scala/xml/dtd/DTD.scala | 0 .../library}/scala/xml/dtd/Decl.scala | 0 .../library}/scala/xml/dtd/DocType.scala | 0 .../scala/xml/dtd/DtdTypeSymbol.scala | 0 .../scala/xml/dtd/ElementValidator.scala | 0 .../library}/scala/xml/dtd/ExternalID.scala | 0 .../library}/scala/xml/dtd/Scanner.scala | 0 .../library}/scala/xml/dtd/Tokens.scala | 0 .../scala/xml/dtd/ValidationException.scala | 0 .../library}/scala/xml/factory/Binder.scala | 0 .../scala/xml/factory/LoggedNodeFactory.scala | 0 .../scala/xml/factory/NodeFactory.scala | 0 .../xml/parsing/ConstructingHandler.scala | 0 .../xml/parsing/ConstructingParser.scala | 0 .../xml/parsing/DefaultMarkupHandler.scala | 0 .../scala/xml/parsing/ExternalSources.scala | 0 .../scala/xml/parsing/FactoryAdapter.scala | 0 .../scala/xml/parsing/FatalError.scala | 0 .../scala/xml/parsing/MarkupHandler.scala | 0 .../scala/xml/parsing/MarkupParser.scala | 0 .../xml/parsing/NoBindingFactoryAdapter.scala | 0 .../scala/xml/parsing/TokenTests.scala | 0 .../xml/parsing/ValidatingMarkupHandler.scala | 0 .../library}/scala/xml/path/Expression.scala | 0 .../xml/transform/BasicTransformer.scala | 0 .../scala/xml/transform/RewriteRule.scala | 0 .../scala/xml/transform/RuleTransformer.scala | 0 .../library}/scala/xml/xsd/ContentModel.scala | 0 .../library}/scala/xml/xsd/Decl.scala | 0 .../library}/scala/xml/xsd/XsTypeSymbol.scala | 0 .../msil-library}/AssemblyInfo.cs.tmpl | 0 .../scala/runtime/compat/Math.scala | 0 .../scala/runtime/compat/Platform.scala | 0 .../scala/runtime/compat/StringBuilder.scala | 0 575 files changed, 621 insertions(+), 4921 deletions(-) create mode 100644 README delete mode 100644 VERSION delete mode 100644 build.readme delete mode 100644 config/build.TEMPLATE.properties delete mode 100644 config/build.base.properties delete mode 100644 config/build.default.properties delete mode 100644 config/excludes/nsc.nslib.excludes delete mode 100644 config/excludes/nsc.nstools.excludes delete mode 100644 config/excludes/nsc.osc-nstools.excludes delete mode 100644 config/izpack/images/Splash.png delete mode 100644 config/izpack/images/install.png delete mode 100644 config/izpack/install-nsc.xml delete mode 100644 config/izpack/izpack_process.xml delete mode 100644 config/izpack/izpack_scala.xml delete mode 100644 config/izpack/izpack_shortcut.xml delete mode 100644 config/izpack/locales/INFO_de.html delete mode 100644 config/izpack/locales/INFO_en.html delete mode 100644 config/izpack/locales/INFO_fr.html delete mode 100644 config/izpack/locales/LICENSE_de.html delete mode 100644 config/izpack/locales/LICENSE_en.html delete mode 100644 config/izpack/locales/LICENSE_fr.html delete mode 100644 config/izpack/registry/bin/ICE_JNIRegistry.dll delete mode 100644 config/izpack/registry/bin/readme.txt delete mode 100644 config/izpack/registry/bin/registry.jar delete mode 100644 config/izpack/registry/bin/setenv.jar delete mode 100644 config/izpack/registry/src/MANIFEST.MF delete mode 100644 config/izpack/registry/src/Main.java delete mode 100644 config/izpack/targets/path_macosx.txt delete mode 100644 config/izpack/targets/path_unix.txt delete mode 100644 newsources/scala/CaseClass.scala delete mode 100644 sources/bin/izpack.symlink.tmpl delete mode 100644 sources/msil/scala_part2.il.diff.tmpl delete mode 100644 sources/scala/Array.cs delete mode 100644 sources/scala/Array.java delete mode 100644 sources/scala/MatchError.cs delete mode 100644 sources/scala/MatchError.java delete mode 100644 sources/scala/ScalaObject.java delete mode 100644 sources/scala/Type.java delete mode 100644 sources/scala/runtime/RunTime.cs delete mode 100644 sources/scala/runtime/RunTime.java delete mode 100644 sources/scala/runtime/types/ClassType.java delete mode 100644 sources/scala/runtime/types/CompoundType.java delete mode 100644 sources/scala/runtime/types/JavaClassType.java delete mode 100644 sources/scala/runtime/types/JavaRefArrayType.java delete mode 100644 sources/scala/runtime/types/ScalaClassType.java delete mode 100644 sources/scala/runtime/types/SingleType.java delete mode 100644 sources/scala/runtime/types/SpecialType.java delete mode 100644 sources/scala/runtime/types/Statistics.java delete mode 100644 sources/scala/runtime/types/TypeAll.java delete mode 100644 sources/scala/runtime/types/TypeAllRef.java delete mode 100644 sources/scala/runtime/types/TypeAny.java delete mode 100644 sources/scala/runtime/types/TypeAnyVal.java delete mode 100644 sources/scala/runtime/types/TypeBoolean.java delete mode 100644 sources/scala/runtime/types/TypeByte.java delete mode 100644 sources/scala/runtime/types/TypeChar.java delete mode 100644 sources/scala/runtime/types/TypeConstructor.java delete mode 100644 sources/scala/runtime/types/TypeDouble.java delete mode 100644 sources/scala/runtime/types/TypeFloat.java delete mode 100644 sources/scala/runtime/types/TypeInt.java delete mode 100644 sources/scala/runtime/types/TypeLong.java delete mode 100644 sources/scala/runtime/types/TypeShort.java delete mode 100644 sources/scala/runtime/types/TypeUnit.java delete mode 100644 sources/scala/runtime/types/ValueType.java rename {sources => src/compiler}/scala/tools/nsc/CompilationUnits.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/CompilerCommand.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/CompilerRun.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/EvalLoop.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/FatalError.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/Global.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/Interpreter.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/Main.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/MainInterpreter.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/MainTokenMetric.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/NoPhase.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/Phase.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/Settings.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/SubComponent.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/ant/NSC.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/ast/TreeBrowsers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/ast/TreeGen.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/ast/TreeInfo.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/ast/TreePrinters.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/ast/Trees.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/ast/parser/MarkupParsers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/ast/parser/Parsers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/ast/parser/Scanners.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/ast/parser/SyntaxAnalyzer.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/ast/parser/Tokens.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/ast/parser/TreeBuilder.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/ScalaPrimitives.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/WorklistAlgorithm.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/icode/BasicBlocks.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/icode/CheckerError.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/icode/Checkers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/icode/ExceptionHandlers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/icode/GenICode.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/icode/ICodes.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/icode/Linearizers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/icode/Members.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/icode/Opcodes.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/icode/Primitives.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/icode/Printers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/icode/TypeKinds.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/icode/TypeStacks.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/backend/jvm/GenJVM.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/AlgebraicMatchers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/Autom2.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/BerrySethis.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/CodeFactory.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/DetWordAutoms.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/LeftTracers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/MatcherLabels.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/NondetWordAutoms.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/Npair.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/PatternMatchers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/PatternNodeCreator.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/PatternNodes.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/RightTracers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/SequenceMatchers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/StateSetComparator.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/TransMatcher.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/matching/WordAutoms.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/models/Models.scala.xxx (100%) rename {sources => src/compiler}/scala/tools/nsc/models/SemanticTokens.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/models/Signatures.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/reporters/AbstractReporter.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/reporters/ConsoleReporter.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/reporters/Reporter.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/reporters/ReporterTimer.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/reporters/StoreReporter.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/Constants.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/Definitions.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/Flags.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/InfoTransformers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/Names.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/Scopes.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/StdNames.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/SymbolLoaders.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/SymbolTable.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/Symbols.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/Types.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/classfile/ClassfileConstants.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/classfile/ClassfileParser.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/classfile/MetaParser.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/classfile/PickleBuffer.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/classfile/PickleFormat.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/classfile/Pickler.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/classfile/SymblfileParser.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/symtab/classfile/UnPickler.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/transform/AddInterfaces.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/transform/Constructors.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/transform/Erasure.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/transform/ExplicitOuter.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/transform/Flatten.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/transform/InfoTransform.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/transform/LambdaLift.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/transform/Mixin.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/transform/OverridingPairs.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/transform/SampleTransform.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/transform/TailCalls.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/transform/Transform.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/transform/UnCurry.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/typechecker/Analyzer.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/typechecker/Codification.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/typechecker/ConstantFolder.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/typechecker/Contexts.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/typechecker/EtaExpansion.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/typechecker/Infer.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/typechecker/Namers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/typechecker/RefChecks.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/typechecker/SuperAccessors.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/typechecker/SyntheticMethods.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/typechecker/TreeCheckers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/typechecker/Typers.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/typechecker/Variances.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/util/CharArrayReader.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/util/FreshNameCreator.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/util/HashSet.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/util/LinkedList.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/util/ListBuffer.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/util/NameTransformer.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/util/Position.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/util/Set.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/util/ShowPickled.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/util/SourceFile.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/util/Statistics.scala (100%) rename {sources => src/compiler}/scala/tools/nsc/util/TreeSet.scala (100%) rename {sources => src/compiler}/scala/tools/util/AbstractFile.java (100%) rename {sources => src/compiler}/scala/tools/util/AbstractFileReader.java (100%) rename {sources => src/compiler}/scala/tools/util/AbstractReporter.java (100%) rename {sources => src/compiler}/scala/tools/util/AbstractTimer.java (100%) rename {sources => src/compiler}/scala/tools/util/ByteArrayFile.java (100%) rename {sources => src/compiler}/scala/tools/util/CharArrayFile.java (100%) rename {sources => src/compiler}/scala/tools/util/ClassPath.java (100%) rename {sources => src/compiler}/scala/tools/util/ConsoleReporter.java (100%) rename {sources => src/compiler}/scala/tools/util/DirectoryPath.java (100%) rename {sources => src/compiler}/scala/tools/util/DummyTimer.java (100%) rename {sources => src/compiler}/scala/tools/util/EmptyIterator.java (100%) rename {sources => src/compiler}/scala/tools/util/PlainFile.java (100%) rename {sources => src/compiler}/scala/tools/util/Position.java (100%) rename {sources => src/compiler}/scala/tools/util/Reporter.java (100%) rename {sources => src/compiler}/scala/tools/util/ReporterTimer.java (100%) rename {sources => src/compiler}/scala/tools/util/SourceFile.java (100%) rename {sources => src/compiler}/scala/tools/util/SourceReader.java (100%) rename {sources => src/compiler}/scala/tools/util/StringBufferWriter.java (100%) rename {sources => src/compiler}/scala/tools/util/Timer.java (100%) rename {sources => src/compiler}/scala/tools/util/UTF8Codec.java (100%) rename {sources => src/compiler}/scala/tools/util/VirtualDirectory.java (100%) rename {sources => src/compiler}/scala/tools/util/VirtualFile.java (100%) rename {sources => src/compiler}/scala/tools/util/ZipArchive.java (100%) rename {sources => src/compiler}/scala/tools/util/debug/AbortError.java (100%) rename {sources => src/compiler}/scala/tools/util/debug/ArrayDebugger.java (100%) rename {sources => src/compiler}/scala/tools/util/debug/Debug.java (100%) rename {sources => src/compiler}/scala/tools/util/debug/Debugger.java (100%) rename {sources => src/compiler}/scala/tools/util/debug/ObjectDebugger.java (100%) rename {sources => src/compiler}/scala/tools/util/debug/ThrowableDebugger.java (100%) rename {sources => src/compiler}/scala/tools/util/debug/ToStringDebugger.java (100%) rename {sources/bin => src/exec}/nscala-tool.win.tmpl (100%) rename {sources/bin => src/exec}/nscala.unix.tmpl (81%) rename {sources/bin => src/exec}/nscala.win.tmpl (100%) rename {sources => src/library}/scala/All$.java (100%) rename {sources => src/library}/scala/AllRef$.java (100%) rename {sources => src/library}/scala/AnyVal.cs (89%) rename {sources => src/library}/scala/AnyVal.java (100%) rename {sources => src/library}/scala/Application.scala (95%) rename {newsources => src/library}/scala/Array.scala (100%) rename {sources => src/library}/scala/Attribute.scala (87%) rename {sources => src/library}/scala/Boolean.cs (95%) rename {sources => src/library}/scala/Boolean.java (100%) rename {sources => src/library}/scala/BufferedIterator.scala (90%) rename {sources => src/library}/scala/Byte.cs (98%) rename {sources => src/library}/scala/Byte.java (100%) rename {sources => src/library}/scala/CaseClass.scala (92%) rename {sources => src/library}/scala/Cell.scala (91%) rename {sources => src/library}/scala/Char.cs (98%) rename {sources => src/library}/scala/Char.java (100%) rename {sources => src/library}/scala/Console.scala (99%) rename {sources => src/library}/scala/Double.cs (96%) rename {sources => src/library}/scala/Double.java (100%) rename {sources => src/library}/scala/Enumeration.scala (98%) rename {sources => src/library}/scala/Float.cs (97%) rename {sources => src/library}/scala/Float.java (100%) rename {sources => src/library}/scala/Function0.scala (100%) rename {sources => src/library}/scala/Function1.scala (100%) rename {sources => src/library}/scala/Function2.scala (100%) rename {sources => src/library}/scala/Function3.scala (100%) rename {sources => src/library}/scala/Function4.scala (100%) rename {sources => src/library}/scala/Function5.scala (100%) rename {sources => src/library}/scala/Function6.scala (100%) rename {sources => src/library}/scala/Function7.scala (100%) rename {sources => src/library}/scala/Function8.scala (100%) rename {sources => src/library}/scala/Function9.scala (100%) rename {sources => src/library}/scala/Int.cs (98%) rename {sources => src/library}/scala/Int.java (100%) rename {sources => src/library}/scala/Iterable.scala (98%) rename {sources => src/library}/scala/IterableProxy.scala (97%) rename {sources => src/library}/scala/Iterator.scala (99%) rename {sources => src/library}/scala/List.scala (99%) rename {sources => src/library}/scala/Long.cs (98%) rename {sources => src/library}/scala/Long.java (100%) rename {newsources => src/library}/scala/MatchError.scala (100%) rename {sources => src/library}/scala/None.scala (89%) rename {sources => src/library}/scala/Option.scala (95%) rename {sources => src/library}/scala/Ordered.scala (94%) rename {sources => src/library}/scala/PartialFunction.scala (92%) rename {sources => src/library}/scala/PartiallyOrdered.scala (95%) rename {sources => src/library}/scala/Predef.scala (99%) rename {sources => src/library}/scala/Proxy.scala (92%) rename {sources => src/library}/scala/Ref.cs (91%) rename {sources => src/library}/scala/Ref.java (100%) rename {newsources => src/library}/scala/ScalaObject.scala (100%) rename {sources => src/library}/scala/Seq.scala (98%) rename {sources => src/library}/scala/SeqProxy.scala (97%) rename {sources => src/library}/scala/SerialVersionUID.scala (85%) rename {sources => src/library}/scala/Short.cs (98%) rename {sources => src/library}/scala/Short.java (100%) rename {sources => src/library}/scala/Some.scala (90%) rename {sources => src/library}/scala/Stream.scala (98%) rename {sources => src/library}/scala/Symbol.scala (92%) rename {sources => src/library}/scala/Tuple1.scala (100%) rename {sources => src/library}/scala/Tuple2.scala (100%) rename {sources => src/library}/scala/Tuple3.scala (100%) rename {sources => src/library}/scala/Tuple4.scala (100%) rename {sources => src/library}/scala/Tuple5.scala (100%) rename {sources => src/library}/scala/Tuple6.scala (100%) rename {sources => src/library}/scala/Tuple7.scala (100%) rename {sources => src/library}/scala/Tuple8.scala (100%) rename {sources => src/library}/scala/Tuple9.scala (100%) rename {sources => src/library}/scala/Unit.cs (93%) rename {sources => src/library}/scala/Unit.java (100%) rename {sources => src/library}/scala/_trait_.scala (90%) rename {sources => src/library}/scala/cloneable.scala (85%) rename {sources => src/library}/scala/collection/BitSet.scala (100%) rename {sources => src/library}/scala/collection/Map.scala (100%) rename {sources => src/library}/scala/collection/MapProxy.scala (100%) rename {sources => src/library}/scala/collection/Set.scala (100%) rename {sources => src/library}/scala/collection/SetProxy.scala (100%) rename {sources => src/library}/scala/collection/immutable/BitSet.scala (100%) rename {sources => src/library}/scala/collection/immutable/ListMap.scala (100%) rename {sources => src/library}/scala/collection/immutable/ListSet.scala (100%) rename {sources => src/library}/scala/collection/immutable/Map.scala (100%) rename {sources => src/library}/scala/collection/immutable/Queue.scala (100%) rename {sources => src/library}/scala/collection/immutable/Set.scala (100%) rename {sources => src/library}/scala/collection/immutable/Stack.scala (100%) rename {sources => src/library}/scala/collection/immutable/Tree.scala (100%) rename {sources => src/library}/scala/collection/immutable/TreeMap.scala (100%) rename {sources => src/library}/scala/collection/immutable/TreeSet.scala (100%) rename {sources => src/library}/scala/collection/mutable/ArrayBuffer.scala (100%) rename {sources => src/library}/scala/collection/mutable/BitSet.scala (100%) rename {sources => src/library}/scala/collection/mutable/Buffer.scala (100%) rename {sources => src/library}/scala/collection/mutable/BufferProxy.scala (100%) rename {sources => src/library}/scala/collection/mutable/DefaultMapModel.scala (100%) rename {sources => src/library}/scala/collection/mutable/DoubleLinkedList.scala (100%) rename {sources => src/library}/scala/collection/mutable/HashMap.scala (100%) rename {sources => src/library}/scala/collection/mutable/HashSet.scala (100%) rename {sources => src/library}/scala/collection/mutable/HashTable.scala (100%) rename {sources => src/library}/scala/collection/mutable/History.scala (100%) rename {sources => src/library}/scala/collection/mutable/ImmutableMapAdaptor.scala (100%) rename {sources => src/library}/scala/collection/mutable/ImmutableSetAdaptor.scala (100%) rename {sources => src/library}/scala/collection/mutable/JavaMapAdaptor.scala (100%) rename {sources => src/library}/scala/collection/mutable/JavaSetAdaptor.scala (100%) rename {sources => src/library}/scala/collection/mutable/LinkedList.scala (100%) rename {sources => src/library}/scala/collection/mutable/ListBuffer.scala (100%) rename {sources => src/library}/scala/collection/mutable/Location.scala (100%) rename {sources => src/library}/scala/collection/mutable/Map.scala (100%) rename {sources => src/library}/scala/collection/mutable/MapProxy.scala (100%) rename {sources => src/library}/scala/collection/mutable/Message.scala (100%) rename {sources => src/library}/scala/collection/mutable/MultiMap.scala (100%) rename {sources => src/library}/scala/collection/mutable/MutableList.scala (100%) rename {sources => src/library}/scala/collection/mutable/ObservableBuffer.scala (100%) rename {sources => src/library}/scala/collection/mutable/ObservableMap.scala (100%) rename {sources => src/library}/scala/collection/mutable/ObservableSet.scala (100%) rename {sources => src/library}/scala/collection/mutable/PriorityQueue.scala (100%) rename {sources => src/library}/scala/collection/mutable/PriorityQueueProxy.scala (100%) rename {sources => src/library}/scala/collection/mutable/Publisher.scala (100%) rename {sources => src/library}/scala/collection/mutable/Queue.scala (100%) rename {sources => src/library}/scala/collection/mutable/QueueProxy.scala (100%) rename {sources => src/library}/scala/collection/mutable/ResizableArray.scala (100%) rename {sources => src/library}/scala/collection/mutable/RevertableHistory.scala (100%) rename {sources => src/library}/scala/collection/mutable/Scriptable.scala (100%) rename {sources => src/library}/scala/collection/mutable/Set.scala (100%) rename {sources => src/library}/scala/collection/mutable/SetProxy.scala (100%) rename {sources => src/library}/scala/collection/mutable/SingleLinkedList.scala (100%) rename {sources => src/library}/scala/collection/mutable/Stack.scala (100%) rename {sources => src/library}/scala/collection/mutable/StackProxy.scala (100%) rename {sources => src/library}/scala/collection/mutable/Subscriber.scala (100%) rename {sources => src/library}/scala/collection/mutable/SynchronizedBuffer.scala (100%) rename {sources => src/library}/scala/collection/mutable/SynchronizedMap.scala (100%) rename {sources => src/library}/scala/collection/mutable/SynchronizedPriorityQueue.scala (100%) rename {sources => src/library}/scala/collection/mutable/SynchronizedQueue.scala (100%) rename {sources => src/library}/scala/collection/mutable/SynchronizedSet.scala (100%) rename {sources => src/library}/scala/collection/mutable/SynchronizedStack.scala (100%) rename {sources => src/library}/scala/collection/mutable/Undoable.scala (100%) rename {sources => src/library}/scala/concurrent/Actor.scala (100%) rename {sources => src/library}/scala/concurrent/Channel.scala (100%) rename {sources => src/library}/scala/concurrent/Lock.scala (100%) rename {sources => src/library}/scala/concurrent/MailBox.scala (100%) rename {sources => src/library}/scala/concurrent/NameServer.scala (100%) rename {sources => src/library}/scala/concurrent/Process.scala (100%) rename {sources => src/library}/scala/concurrent/SyncChannel.scala (100%) rename {sources => src/library}/scala/concurrent/SyncVar.scala (100%) rename {sources => src/library}/scala/concurrent/TIMEOUT.scala (100%) rename {sources => src/library}/scala/concurrent/jolib.scala (100%) rename {sources => src/library}/scala/concurrent/ops.scala (100%) rename {sources => src/library}/scala/concurrent/pilib.scala (100%) rename {sources => src/library}/scala/dbc/DataType.scala (100%) rename {sources => src/library}/scala/dbc/Database.scala (100%) rename {sources => src/library}/scala/dbc/Syntax.scala (100%) rename {sources => src/library}/scala/dbc/Utilities.scala (100%) rename {sources => src/library}/scala/dbc/Value.scala (100%) rename {sources => src/library}/scala/dbc/Vendor.scala (100%) rename {sources => src/library}/scala/dbc/datatype/ApproximateNumeric.scala (100%) rename {sources => src/library}/scala/dbc/datatype/Boolean.scala (100%) rename {sources => src/library}/scala/dbc/datatype/Character.scala (100%) rename {sources => src/library}/scala/dbc/datatype/CharacterLargeObject.scala (100%) rename {sources => src/library}/scala/dbc/datatype/CharacterString.scala (100%) rename {sources => src/library}/scala/dbc/datatype/CharacterVarying.scala (100%) rename {sources => src/library}/scala/dbc/datatype/ExactNumeric.scala (100%) rename {sources => src/library}/scala/dbc/datatype/Factory.scala (100%) rename {sources => src/library}/scala/dbc/datatype/Numeric.scala (100%) rename {sources => src/library}/scala/dbc/datatype/String.scala (100%) rename {sources => src/library}/scala/dbc/datatype/Unknown.scala (100%) rename {sources => src/library}/scala/dbc/exception/IncompatibleSchema.scala (100%) rename {sources => src/library}/scala/dbc/exception/UnsupportedFeature.scala (100%) rename {sources => src/library}/scala/dbc/result/Field.scala (100%) rename {sources => src/library}/scala/dbc/result/FieldMetadata.scala (100%) rename {sources => src/library}/scala/dbc/result/Relation.scala (100%) rename {sources => src/library}/scala/dbc/result/Status.scala (100%) rename {sources => src/library}/scala/dbc/result/Tuple.scala (100%) rename {sources => src/library}/scala/dbc/statement/AccessMode.scala (100%) rename {sources => src/library}/scala/dbc/statement/DerivedColumn.scala (100%) rename {sources => src/library}/scala/dbc/statement/Expression.scala (100%) rename {sources => src/library}/scala/dbc/statement/Insert.scala (100%) rename {sources => src/library}/scala/dbc/statement/InsertionData.scala (100%) rename {sources => src/library}/scala/dbc/statement/IsolationLevel.scala (100%) rename {sources => src/library}/scala/dbc/statement/JoinType.scala (100%) rename {sources => src/library}/scala/dbc/statement/Jointure.scala (100%) rename {sources => src/library}/scala/dbc/statement/Relation.scala (98%) rename {sources => src/library}/scala/dbc/statement/Select.scala (100%) rename {sources => src/library}/scala/dbc/statement/SetClause.scala (100%) rename {sources => src/library}/scala/dbc/statement/SetQuantifier.scala (100%) rename {sources => src/library}/scala/dbc/statement/Statement.scala (100%) rename {sources => src/library}/scala/dbc/statement/Status.scala (100%) rename {sources => src/library}/scala/dbc/statement/Table.scala (100%) rename {sources => src/library}/scala/dbc/statement/Transaction.scala (100%) rename {sources => src/library}/scala/dbc/statement/Update.scala (100%) rename {sources => src/library}/scala/dbc/statement/expression/Aggregate.scala (100%) rename {sources => src/library}/scala/dbc/statement/expression/BinaryOperator.scala (100%) rename {sources => src/library}/scala/dbc/statement/expression/Constant.scala (100%) rename {sources => src/library}/scala/dbc/statement/expression/Default.scala (100%) rename {sources => src/library}/scala/dbc/statement/expression/Field.scala (100%) rename {sources => src/library}/scala/dbc/statement/expression/FunctionCall.scala (100%) rename {sources => src/library}/scala/dbc/statement/expression/Select.scala (100%) rename {sources => src/library}/scala/dbc/statement/expression/SetFunction.scala (100%) rename {sources => src/library}/scala/dbc/statement/expression/TypeCast.scala (100%) rename {sources => src/library}/scala/dbc/statement/expression/UnaryOperator.scala (100%) rename {sources => src/library}/scala/dbc/syntax/DataTypeUtil.scala (100%) rename {sources => src/library}/scala/dbc/syntax/Database.scala (100%) rename {sources => src/library}/scala/dbc/syntax/Statement.scala (100%) rename {sources => src/library}/scala/dbc/syntax/StatementExpression.scala (100%) rename {sources => src/library}/scala/dbc/value/ApproximateNumeric.scala (100%) rename {sources => src/library}/scala/dbc/value/Boolean.scala (100%) rename {sources => src/library}/scala/dbc/value/Character.scala (100%) rename {sources => src/library}/scala/dbc/value/CharacterLargeObject.scala (100%) rename {sources => src/library}/scala/dbc/value/CharacterVarying.scala (100%) rename {sources => src/library}/scala/dbc/value/Conversion.scala (100%) rename {sources => src/library}/scala/dbc/value/ExactNumeric.scala (100%) rename {sources => src/library}/scala/dbc/value/Factory.scala (100%) rename {sources => src/library}/scala/dbc/value/Unknown.scala (100%) rename {sources => src/library}/scala/dbc/vendor/PostgreSQL.scala (100%) rename {sources => src/library}/scala/io/Position.scala (100%) rename {sources => src/library}/scala/io/Source.scala (100%) rename {sources => src/library}/scala/mobile/Code.scala (100%) rename {sources => src/library}/scala/mobile/Location.scala (100%) rename {sources => src/library}/scala/reflect/Code.scala (100%) rename {sources => src/library}/scala/reflect/Print.scala (100%) rename {sources => src/library}/scala/reflect/Symbol.scala (100%) rename {sources => src/library}/scala/reflect/Type.scala (100%) rename {sources => src/library}/scala/reflect/TypedCode.scala (100%) rename {sources => src/library}/scala/remote.scala (100%) rename {sources => src/library}/scala/runtime/AtomicReference.java (100%) rename {sources => src/library}/scala/runtime/BooleanRef.java (100%) rename {sources => src/library}/scala/runtime/BoxedAnyArray.scala (100%) rename {sources => src/library}/scala/runtime/BoxedArray.scala (100%) rename {sources => src/library}/scala/runtime/BoxedBoolean.java (100%) rename {sources => src/library}/scala/runtime/BoxedBooleanArray.scala (100%) rename {sources => src/library}/scala/runtime/BoxedByte.java (100%) rename {sources => src/library}/scala/runtime/BoxedByteArray.scala (100%) rename {sources => src/library}/scala/runtime/BoxedChar.java (100%) rename {sources => src/library}/scala/runtime/BoxedCharArray.scala (100%) rename {sources => src/library}/scala/runtime/BoxedDouble.java (100%) rename {sources => src/library}/scala/runtime/BoxedDoubleArray.scala (100%) rename {sources => src/library}/scala/runtime/BoxedFloat.java (100%) rename {sources => src/library}/scala/runtime/BoxedFloatArray.scala (100%) rename {sources => src/library}/scala/runtime/BoxedInt.java (100%) rename {sources => src/library}/scala/runtime/BoxedIntArray.scala (100%) rename {sources => src/library}/scala/runtime/BoxedLong.java (100%) rename {sources => src/library}/scala/runtime/BoxedLongArray.scala (100%) rename {sources => src/library}/scala/runtime/BoxedNumber.java (100%) rename {sources => src/library}/scala/runtime/BoxedObjectArray.scala (100%) rename {sources => src/library}/scala/runtime/BoxedShort.java (100%) rename {sources => src/library}/scala/runtime/BoxedShortArray.scala (100%) rename {sources => src/library}/scala/runtime/BoxedUnit.java (100%) rename {sources => src/library}/scala/runtime/ByteRef.java (100%) rename {sources => src/library}/scala/runtime/CharRef.java (100%) rename {sources => src/library}/scala/runtime/DoubleRef.java (100%) rename sources/scala/ScalaObject.cs => src/library/scala/runtime/ExceptionHandling.cs (62%) rename sources/scala/runtime/types/LazyParents.java => src/library/scala/runtime/ExceptionHandling.java (60%) rename {sources => src/library}/scala/runtime/FNV_Hash.java (100%) rename {sources => src/library}/scala/runtime/FloatRef.java (100%) rename {sources => src/library}/scala/runtime/IOMap.java (100%) rename {sources => src/library}/scala/runtime/IntRef.java (100%) rename {sources => src/library}/scala/runtime/InterpreterSupport.java (100%) rename {sources => src/library}/scala/runtime/LongRef.java (100%) rename {sources => src/library}/scala/runtime/MetaAttribute.cs (100%) rename {sources => src/library}/scala/runtime/ObjectRef.java (100%) rename {sources => src/library}/scala/runtime/ScalaRunTime.scala (94%) rename {sources => src/library}/scala/runtime/ShortRef.java (100%) rename {sources => src/library}/scala/runtime/SymtabAttribute.cs (100%) rename {sources => src/library}/scala/runtime/compat/Math.scala (100%) rename {sources => src/library}/scala/runtime/compat/Platform.scala (100%) rename {sources => src/library}/scala/runtime/compat/StringBuilder.scala (100%) rename {sources => src/library}/scala/runtime/matching/Address.scala (100%) rename {sources => src/library}/scala/runtime/matching/NonTerm.scala (100%) rename {sources => src/library}/scala/runtime/matching/PatternTests.scala (100%) rename {sources => src/library}/scala/runtime/matching/Rule.scala (100%) rename {sources => src/library}/scala/runtime/matching/TestAlphabet.scala (100%) rename {sources => src/library}/scala/serializable.scala (100%) rename {sources => src/library}/scala/testing/Benchmark.scala (100%) rename {sources => src/library}/scala/testing/SUnit.scala (100%) rename {sources => src/library}/scala/testing/UnitTest.scala (100%) rename {sources => src/library}/scala/text/Document.scala (100%) rename {sources => src/library}/scala/transient.scala (87%) rename {sources => src/library}/scala/util/automata/BaseBerrySethi.scala (100%) rename {sources => src/library}/scala/util/automata/DetWordAutom.scala (100%) rename {sources => src/library}/scala/util/automata/Inclusion.scala (100%) rename {sources => src/library}/scala/util/automata/NondetWordAutom.scala (100%) rename {sources => src/library}/scala/util/automata/SubsetConstruction.scala (100%) rename {sources => src/library}/scala/util/automata/WordBerrySethi.scala (100%) rename {sources => src/library}/scala/util/grammar/HedgeRHS.scala (100%) rename {sources => src/library}/scala/util/grammar/TreeRHS.scala (100%) rename {sources => src/library}/scala/util/logging/ConsoleLogger.scala (100%) rename {sources => src/library}/scala/util/logging/Logged.scala (100%) rename {sources => src/library}/scala/util/parsing/CharInputStreamIterator.scala (100%) rename {sources => src/library}/scala/util/parsing/Parsers.scala (100%) rename {sources => src/library}/scala/util/parsing/SimpleTokenizer.scala (100%) rename {sources => src/library}/scala/util/regexp/Base.scala (100%) rename {sources => src/library}/scala/util/regexp/PointedHedgeExp.scala (100%) rename {sources => src/library}/scala/util/regexp/SyntaxError.scala (100%) rename {sources => src/library}/scala/util/regexp/WordExp.scala (100%) rename {sources => src/library}/scala/volatile.scala (87%) rename {sources => src/library}/scala/xml/Atom.scala (100%) rename {sources => src/library}/scala/xml/Comment.scala (100%) rename {sources => src/library}/scala/xml/Document.scala (100%) rename {sources => src/library}/scala/xml/Elem.scala (100%) rename {sources => src/library}/scala/xml/EntityRef.scala (100%) rename {sources => src/library}/scala/xml/MalformedAttributeException.scala (100%) rename {sources => src/library}/scala/xml/MetaData.scala (100%) rename {sources => src/library}/scala/xml/Molecule.scala (100%) rename {sources => src/library}/scala/xml/NamespaceBinding.scala (100%) rename {sources => src/library}/scala/xml/Node.scala (100%) rename {sources => src/library}/scala/xml/NodeBuffer.scala (100%) rename {sources => src/library}/scala/xml/NodeSeq.scala (100%) rename {sources => src/library}/scala/xml/NodeTraverser.scala (100%) rename {sources => src/library}/scala/xml/Null.scala (100%) rename {sources => src/library}/scala/xml/Parsing.scala (100%) rename {sources => src/library}/scala/xml/PrefixedAttribute.scala (100%) rename {sources => src/library}/scala/xml/PrettyPrinter.scala (100%) rename {sources => src/library}/scala/xml/ProcInstr.scala (100%) rename {sources => src/library}/scala/xml/SpecialNode.scala (100%) rename {sources => src/library}/scala/xml/Text.scala (100%) rename {sources => src/library}/scala/xml/TextBuffer.scala (100%) rename {sources => src/library}/scala/xml/TopScope.scala (100%) rename {sources => src/library}/scala/xml/TypeSymbol.scala (100%) rename {sources => src/library}/scala/xml/UnprefixedAttribute.scala (100%) rename {sources => src/library}/scala/xml/Utility.scala (100%) rename {sources => src/library}/scala/xml/XML.scala (100%) rename {sources => src/library}/scala/xml/dtd/ContentModel.scala (100%) rename {sources => src/library}/scala/xml/dtd/ContentModelParser.scala (100%) rename {sources => src/library}/scala/xml/dtd/DTD.scala (100%) rename {sources => src/library}/scala/xml/dtd/Decl.scala (100%) rename {sources => src/library}/scala/xml/dtd/DocType.scala (100%) rename {sources => src/library}/scala/xml/dtd/DtdTypeSymbol.scala (100%) rename {sources => src/library}/scala/xml/dtd/ElementValidator.scala (100%) rename {sources => src/library}/scala/xml/dtd/ExternalID.scala (100%) rename {sources => src/library}/scala/xml/dtd/Scanner.scala (100%) rename {sources => src/library}/scala/xml/dtd/Tokens.scala (100%) rename {sources => src/library}/scala/xml/dtd/ValidationException.scala (100%) rename {sources => src/library}/scala/xml/factory/Binder.scala (100%) rename {sources => src/library}/scala/xml/factory/LoggedNodeFactory.scala (100%) rename {sources => src/library}/scala/xml/factory/NodeFactory.scala (100%) rename {sources => src/library}/scala/xml/parsing/ConstructingHandler.scala (100%) rename {sources => src/library}/scala/xml/parsing/ConstructingParser.scala (100%) rename {sources => src/library}/scala/xml/parsing/DefaultMarkupHandler.scala (100%) rename {sources => src/library}/scala/xml/parsing/ExternalSources.scala (100%) rename {sources => src/library}/scala/xml/parsing/FactoryAdapter.scala (100%) rename {sources => src/library}/scala/xml/parsing/FatalError.scala (100%) rename {sources => src/library}/scala/xml/parsing/MarkupHandler.scala (100%) rename {sources => src/library}/scala/xml/parsing/MarkupParser.scala (100%) rename {sources => src/library}/scala/xml/parsing/NoBindingFactoryAdapter.scala (100%) rename {sources => src/library}/scala/xml/parsing/TokenTests.scala (100%) rename {sources => src/library}/scala/xml/parsing/ValidatingMarkupHandler.scala (100%) rename {sources => src/library}/scala/xml/path/Expression.scala (100%) rename {sources => src/library}/scala/xml/transform/BasicTransformer.scala (100%) rename {sources => src/library}/scala/xml/transform/RewriteRule.scala (100%) rename {sources => src/library}/scala/xml/transform/RuleTransformer.scala (100%) rename {sources => src/library}/scala/xml/xsd/ContentModel.scala (100%) rename {sources => src/library}/scala/xml/xsd/Decl.scala (100%) rename {sources => src/library}/scala/xml/xsd/XsTypeSymbol.scala (100%) rename {sources/msil => src/msil-library}/AssemblyInfo.cs.tmpl (100%) rename {sources/msil => src/msil-library}/scala/runtime/compat/Math.scala (100%) rename {sources/msil => src/msil-library}/scala/runtime/compat/Platform.scala (100%) rename {sources/msil => src/msil-library}/scala/runtime/compat/StringBuilder.scala (100%) diff --git a/README b/README new file mode 100644 index 000000000..837d5170a --- /dev/null +++ b/README @@ -0,0 +1,59 @@ +================================================================================ + THE SCALA REPOSITRY + Structure and build system +================================================================================ + +Part I. The repository layout +-------------------------------------------------------------------------------- + +Follows the file layout of the Scala repository. Files marked with a † are not +part of the Subversion repository but are either automatically generated by the +build script or user-created if needed. + +scala/ + build/ † Temporary staging area for build products. + build.excludes † An optional build configuration file. + build.properties † An optional build configuration file. + build.xml The main Ant build script. + dist/ † The destination folder of Scala distributions. + docs/ Documentation of Scala. More in its own module. + development/ Developer documentation. + examples/ Scala example files. + man/ UNIX manual files. + lib/ Pre-compiled libraries for the build. + fjbg.jar The Java byte-code generation library. + jaco.jar The JaCo Java compiler. + msil.jar The CLR byte-code generation library. + scala-compiler.jar The last stable version of the Scala compiler. + scala-library.jar The last stable version of the Scala library. + scala.dll The Scala library for Windows. + README The file you are currently reading. + sandbox/ † A folder to test code etc. + src/ All the source files of Scala. + compiler/ The sources of the Scala compiler. + exec/ The sources of the executable wrapper-scripts. + library/ The sources of the Scala library. + test/ The Scala test suite. + +Any change to this structure requires a modification of the 'build.xml' file. + + + +Part II. Building Scala +-------------------------------------------------------------------------------- + +The Scala build system is based on Apache Ant. Most required pre-compiled libraries are part of the repository (in 'lib/'). The following however is assumed to be installed on the build machine: + - A Java SDK 1.4 or above (1.5 not supported). + - Apache Ant version 1.6.2 or above. + +More to come ... + +Part III. Creating distributions +-------------------------------------------------------------------------------- + +More to come ... + +Part IV. Contributing to Scala +-------------------------------------------------------------------------------- + +More to come ... diff --git a/VERSION b/VERSION deleted file mode 100644 index 430aa8aa9..000000000 --- a/VERSION +++ /dev/null @@ -1,9 +0,0 @@ -############################################################-*-Makefile-*-#### -# DO NOT EDIT. Automatically generated file! -# -# To modify the current version use the following command: -# make version-set VERSION= -# -# DO NOT EDIT. Automatically generated file! -############################################################################## -1.4.0.4 diff --git a/build.readme b/build.readme deleted file mode 100644 index 925093061..000000000 --- a/build.readme +++ /dev/null @@ -1,114 +0,0 @@ -BUILDING NEW SCALA WITH ANT ---------------------------- - -This is version 1.0 of the Scala Ant-based build system SABBUS. - -QUICK START ------------ - -- Copy the 'build.TEMPLATE.properties' file in 'build.support' to - 'build.USER_NAME.properties'. Set all properties in this file. - -- In a terminal window, type: - ANT_OPTS="-Xmx256M" ant distrib - -USAGE GUIDE ------------ - -PREREQUISITES - -The new Scala Ant-based build system (SABBUS) requires the following elements: - - An old Scala distribution. The Scala tools ('tools.jar' must be of a version - that does contain the improved Scalac Ant task at - 'scala.tools.scalac.ant.Scalac'. The scala library ('scala.jar') must contain - all classes required to build NSC. - - A PiCo/JaCo distribution. It must contain the improved PiCo task at - 'jaco.pizza.ant.Pico'. - - Ant version 1.6 or above. - - Java version 1.4 or above (Java 1.5 might not be supported). - -SETTING UP - -The set-up of SABBUS is done entirely in the 'build.properties' file. Make sure -that all values in this file are set and correct. - -Another configuration file exists ('build.support/build.default'). This file -should not be modified as any property declared in 'build.properties' will -override the value set in 'build.default'. - -With a normal Java distribution, the standard memory allocated to the JVM in -insufficient for Scala compilation. The ANT_OPTS environment variable needs to -be set to increase the memory size (either each time as in the quick start -example above, or once and for all in the default shell environment). - -Skipping parts of the build - -In some cases, parts of the build process should be disabled for debug reasons: - - skip.doc will not build the LaTeX documentation. - - skip.nsc will not build anything with NSC. This will create a non-working - distribution. - -BUILDING NEW SCALA - -The 'build' target builds all the Scala library and tools. It is composed of the -following sub-targets: - - 'build.pico.nslib': - Builds the Java files in Scala (runtime, tools and scala root) with PiCo. - When both a Java file in sources and a Scala file in newsources exist, the - Java file is not compiled (it is considered to have been superseeded by the - Scala file). - - 'build.osc.nstools': - Builds NSC with an existing Scalac (found in path of property - 'ostools.jar'). - - 'build.nsc.nslib': - Builds the new Scala library with the compiler built at target - 'build.osc.nstools'. Depends on 'build.osc.nstools' & 'build.pico.nslib'. - If files should not be compiled at that stage, they can be specified in the - 'build.support/nsc.nslib.excludes' - - 'build.nsc.nstools': - Builds NSC with the compiler built at target 'build.osc.nstools'. Depends - on 'build.osc.nstools' & 'build.pico.nslib'. If files should not be - compiled at that stage, they can be specified in the - 'build.support/nsc.nstools.excludes' - -CONSTRUCTING A DISTRIBUTION - -The 'distrib' target constructs a simple distribution of new Scala from the -latest build. The following steps will be done: - - Creates a standard distribution folder hierarchy. - - Create JAR packages for the library ('nslib.jar'), and the tools, both - compiled with Scalac ('osc-nstools.jar') and with NSC ('nstools.jar'). - - Create script files (bash and bat) to execute the new Scala compiler. - - Adds man files and the documentation to the distribution. - - Generates some symbolic links to simplify navigation (only on UNIX). Amongst - other, a 'latest' link in the 'dist' folder will point to the latest - distribution folder (useful to refer in a permanent way to the latest - distribution on your system). - -CLEANING - -The 'clean' target removes all build and distribution files. - - 'clean.build' only removes build files and does not touch distribution files. - - 'clean.distrib' only removes distribution files. - -DOCUMENTING - -Not implemented yet - -TESTING - -Not implemented yet - -KNOWN BUGS, LIMITATIONS AND PLANNED IMPROVEMENTS ------------------------------------------------- - -- Create NSC executable scripts for UNIX and Windows. -- Create Windows build system. -- Create documentation. -- Support testing. - -HISTORY -------- - -1.0 - First functioning version. Supports clean, build and a limited distrib. diff --git a/build.xml b/build.xml index 4fc5401fc..e570ccd1c 100644 --- a/build.xml +++ b/build.xml @@ -1,744 +1,494 @@ - + - - This is SABBUS, the system to build the Scala NSC compiler as well as - various related tools. The 'build.TEMPLATE.properties' file must be - customised for your own particular system, no other customisation should - be required. The build file expects the file structure of a Scala CVS - distribution. - - - This is SABBUS, your helpful build script for new Scala. + + I am Sabbus for Scala-core, the build system for the Scala compiler and core + library. Please check the 'docs/README' file for more information about me. + + + Running Sabbus for Scala-core - - - + + + + + + + + Sabbus requires additional memory. Please set the 'ANT_OPTS' environment + property to '-Xmx256M' or more. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + starr.lib.jar=${starr.lib.jar} + + + + + + + + starr.comp.jar=${starr.comp.jar} + + + + + + fjbg.jar=${fjbg.jar} + + + + + + msil.jar=${msil.jar} + + + + + + jaco.jar=${jaco.jar} + + + + + + ant.jar=${ant.jar} + + + + + + + + + + - SABBUS requires additional memory. Please set the 'ANT_OPTS' environment property to '-Xmx256M' or more. - - - - - - - SABBUS is too unstable when used with a non-empty classpath. Unset your classpath environment variable. - - - - - - Loading properties from '${basedir}/config/build.base.properties' - - - - Loading properties from '${config.dir}/build.${user.name}.properties' - - Loading properties from '${build.support.dir}/build.${user.name}.properties' - - Loading properties from '${config.dir}/build.default.properties' - - - - - - - - - + + + + - - - - + + + + - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - oslib.jar=${oslib.jar} - oslib.src=${oslib.src} - ostools.jar=${ostools.jar} - fjbg.jar=${fjbg.jar} - msil.jar=${msil.jar} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - jaco.jar=${jaco.jar} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - scala.dll=${scala.dll} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A full distribution cannot be build when skipping NSC. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - izpack.home=${izpack.home} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Windows-specific IzPack installer is not generated yet. - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Build is stable + - - - - + + + + Docs is not available yet. + - - - - oslib.jar=${oslib.jar} - oslib.src=${oslib.src} - ostools.jar=${ostools.jar} - - - - - - - - - - - - - - Generating API documentation to ${build.dir}/doc/api - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Execute 'ant -projecthelp' for build file help. - Execute 'ant -help' for Ant help. - + + + + Dist is not available yet. + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/build.TEMPLATE.properties b/config/build.TEMPLATE.properties deleted file mode 100644 index 2606ac462..000000000 --- a/config/build.TEMPLATE.properties +++ /dev/null @@ -1,34 +0,0 @@ -############################################################################## -# USER PROPERTIES FOR SABBUS # -############################################################################## -# These are user-specific properties for SABBUS. Any property that has not -# been set here will take the value defined in 'build.default.properties' -# or 'build.base.properties'. Properties in the latter of these files can -# be refered to from within this file. -# $Id$ -############################################################################## - -# The path to the old Scala library JAR package and source directory. -oslib.jar= -oslib.src= - -# The path to the old Scala tools. -ostools.jar= - -# The path to the Jaco/Pico compiler. -jaco.jar= - -# The path to the FJBG byte-code generation library. -fjbg.jar= - -# The path to the MSIL byte-code generation library. -msil.jar= - -# The path to the MSIL DLL library. -scala.dll= - -# The path to the IzPack tool. -izpack.jar= - -# Other custom properties come here -nsc.skip= diff --git a/config/build.base.properties b/config/build.base.properties deleted file mode 100644 index 25ef7417e..000000000 --- a/config/build.base.properties +++ /dev/null @@ -1,16 +0,0 @@ -############################################################################## -# BASE PROPERTIES FOR SABBUS # -############################################################################## -# These are properties specific to the layout of the Scala distribution. -# DO NOT CHANGE them unless one of the mentioned directory is changed. -# $Id$ -############################################################################## - -bin.dir=${basedir}/bin -build.support.dir=${basedir}/build.support -config.dir=${basedir}/config -doc.dir=${basedir}/doc -newsources.dir=${basedir}/newsources -sources.dir=${basedir}/sources -support.dir=${basedir}/support -test.dir=${basedir}/test diff --git a/config/build.default.properties b/config/build.default.properties deleted file mode 100644 index 8f9788f4d..000000000 --- a/config/build.default.properties +++ /dev/null @@ -1,133 +0,0 @@ -############################################################################## -# DEFAULT PROPERTIES FOR SABBUS # -############################################################################## -# These are default values for all properties used by SABBUS. DO NOT CHANGE -# them in this file. All properties can be overriden in the -# build.USER_NAME.properties file. -# $Id$ -############################################################################## - -# CONFIGURATION OF NSC -############################################################################## - -copyright.notice=(C) 2002-06 LAMP/EPFL - -# What NSC should output during compilation. Either 'none', 'verbose', 'debug'. -nsc.logging=none - -# After which compile phase NSC should stop. This will induce build errors. -nsc.stop= - -# A comma-separated list of compile phases that NSC should skip. -nsc.skip= - -# A comma-separated list of compile phases that NSC should log. -nsc.log= - -# A comma-separated list of compile phases which result should be checked for -# consistency. -nsc.check= - -# A comma-separated list of compile phases that NSC should print. -nsc.print= - -# The name of a file that lists files that should be excluded when building -# the new Scala library. This file MUST EXIST. -nsc.nslib.excludes=${config.dir}/excludes/nsc.nslib.excludes - -# The name of a file that lists files that should be excluded when building -# the new Scala tools. This file MUST EXIST. -nsc.nstools.excludes=${config.dir}/excludes/nsc.nstools.excludes - -# The name of a file that lists files that should be excluded when building -# the new Scala tools. This file MUST EXIST. -nsc.osc-nstools.excludes=${config.dir}/excludes/nsc.osc-nstools.excludes - -# Boolean flag that controls whether the NSC compiler will generate -# debug information in class files -nsc.debuginfo=true - - -# LOCATION OF PRE-COMPILED LIBRARIES -############################################################################## - -# The path to the old Scala library ('scala.jar'). -oslib.jar=/usr/local/lib/scala.jar - -# The path to the old Scala library sources. -oslib.src=/usr/local/share/scala/src - -# The path to the old Scala tools ('tools.jar'). -ostools.jar=/usr/local/lib/tools.jar - -# The path to the JaCo compiler ('jaco.jar'). -jaco.jar=/usr/local/lib/jaco.jar - -# The path to the FJBG byte-code generation library ('fjbg.jar'). -fjbg.jar=/usr/local/lib/fjbg.jar - -# The path to the MSIL byte-code generation library ('fjbg.jar'). -msil.jar=/usr/local/lib/msil.jar - -# The path to the MSIL DLL library ('scala.dll'). -scala.dll=/usr/local/lib/scala.dll - -# The path to the Java base classes ('rt.jar' or 'classes.jar'). -java.jar=${java.home}/jre/lib/rt.jar - -# The path to the Ant base classes ('ant.jar'). -ant.jar=${ant.home}/lib/ant.jar - -# The path to the IzPack tools ('standalone-compiler.jar'). -izpack.home=/usr/local/ - -# LOCATION OF BUILD PRODUCTS -############################################################################## - -# The directory in which all build products live. -build.dir=${basedir}/build - -# The directory to which the new Scala library is compiled. -build.nslib.dir=${build.dir}/nslib - -# The directory to which the part of the new Scala library built with PiCo -# is compiled. This should be different from ${build.nslib.dir}. -build.pico-nslib.dir=${build.dir}/pico-nslib - -# The directory to which the new Scala tools (built with OSC) are compiled. -build.osc-nstools.dir=${build.dir}/osc-nstools - -# The directory to which the new Scala tools are compiled. -build.nstools.dir=${build.dir}/nstools - -# LOCATION AND STRUCTURE OF THE DISTRIBUTION -# Overriding these properties will produce a non-standard distribution that -# might not be useable. -############################################################################## - -# The directory to which a new distribution will be added, both for UNIX and -# Windows. These directories MUST BE SEPARATE! -distrib.unix.dir=${basedir}/distribs/unix -distrib.win.dir=${basedir}/distribs/windows - -# The name of the product to build. -distrib.name=nscala - -# The name of the JAR file in which the new Scala library should be archived. -nslib.jar.name=nslib.jar - -# The name of the JAR file in which the new Scala tools should be archived. -nstools.jar.name=nstools.jar - -# The name of the JAR file in which the new Scala tools (built with OSC) -# should be archived. -osc-nstools.jar.name=osc-nstools.jar - -# The name of the Scala executables -scala.exec.name=ns -scalac.exec.name=nsc -scalai.exec.name=nsi -scalap.exec.name=nsp -scalatok.exec.name=nsctok - -############################################################################## diff --git a/config/excludes/nsc.nslib.excludes b/config/excludes/nsc.nslib.excludes deleted file mode 100644 index 7dd733694..000000000 --- a/config/excludes/nsc.nslib.excludes +++ /dev/null @@ -1,10 +0,0 @@ -################################################################################ -# NSLIB EXCLUDED FILES # -################################################################################ -# A list of files to exclude when compiling the Scala library with NSC. All -# files can be defined using Ant's fileset wildcard notation; one statement per -# line. -# $Id$ -################################################################################ - -scala/dbc/** diff --git a/config/excludes/nsc.nstools.excludes b/config/excludes/nsc.nstools.excludes deleted file mode 100644 index a02527bf1..000000000 --- a/config/excludes/nsc.nstools.excludes +++ /dev/null @@ -1,7 +0,0 @@ -################################################################################ -# NSTOOLS EXCLUDED FILES # -################################################################################ -# A list of files to exclude when compiling the Scala tools with NSC. All files -# can be defined using Ant's fileset wildcard notation; one statement per line. -# $Id$ -################################################################################ diff --git a/config/excludes/nsc.osc-nstools.excludes b/config/excludes/nsc.osc-nstools.excludes deleted file mode 100644 index 3ef12c77d..000000000 --- a/config/excludes/nsc.osc-nstools.excludes +++ /dev/null @@ -1,7 +0,0 @@ -################################################################################ -# OSC-NSTOOLS EXCLUDED FILES # -################################################################################ -# A list of files to exclude when compiling the Scala tools with NSC. All files -# can be defined using Ant's fileset wildcard notation; one statement per line. -# $Id$ -################################################################################ diff --git a/config/izpack/images/Splash.png b/config/izpack/images/Splash.png deleted file mode 100644 index 8d0e8389cc5d9c7dfc02f4dacd33e88864fd6aaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153467 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

VHlK3rADJZH#<8wJ5z7e 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�}+ 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 SV|FKb#;50w+I=1W6Df zfFr>$U?fOlILHLZKWxKsBtwn`!Lf!YvL;F*DYD6)s;aBHs%ySgb?0;MJ@eUl-gm8i z?k$S!fmNis5v_af-fOSnTi<%ux4$*7{onqZfAL?NX`E~%Niy?OfBp;q7Wbb?lJu|D z3fLC^&tLc_-0J`7pZ_cWd6G02^q;=^_J1?NvHD;9)W7kQ)i-J<=4M{{yXXGr|2|31 zCqMOtAOGo}Nt3_ybHDVn>CgSGzm;T3nx=%+CE7Ed_{)v$A&{JG%Lo%A28*6$OVVJ2 zT$U8LicU5qm!|L>Of`Sxbt}Orek#i-mHrP${PTW@?j@=bt+H!jCFg zHkl*`$>gw*WaN%#5rr~0tR^DT;pZDxryLwz9>!bof>8+m9Um{n6|?$N=8i%sa&%C7 zco;#&7Bi;dFwRk6&9qHa&x#}ZqUrd0mV;gF9&A%5XH%tq6ze#h5Lefnx4^a%kgJ)9 zfj}oo3doRyLX#he7Yhl$N-1g0%q*OKA?73Lr^#SE8kI!JsLA3SbDb#Xxe;9wQhqQo zKHe@M=PCF&^AqQlzzUbsNRx^38DI*)Oz_Q+o|toolv7M#f;bn7&YtmeaVdV}g4Cmc zMsV2%?ImF4E*E11OOuh#ZwF|2Ci%A0EXv z_f~M?D7@l1tP^tpQ*(Yq#n~fdNI{kmjb~-oh0R?iPt`PuifiytDx#DpCoj;LdMh$U zP6|nq4jm&a6_*qA1$)4e@TQPoh-jEZBF&Iv1Q~T$C}j1*q`kB{vvev+k>D{XXQ+-W zDV3Y3M5PFrlsxoeiV;;6sT0rL1-g@s8FpN8t_bqV1LDD72p+xVr#~m?h!9hHju$Cp zyoZRtgBe+TiDFs=$qD9cP9q<;#K6QOn6e-SY>sR^1{!vnhOuSJk9f*sE5jkvT=~;a zrU1l6babImDWuhEdF9M=rLwBhBpL9Vj7NnckE(XWmp!n`!oQqkl==^=PquwrDTjH`3O)tp3L^e8z-weVj^%ZPI^om*LHEu3-%NeaVk zGDxHX0UDtX#ykanBENp4qpw)Yt-AYx0K^J8us@O*FtWFtcobp59SwRpgt6~5Ix*yq zeDG$40Pz;m(u2bA6D>dRWV*O0LHnTnlzDL4iZAh2So

lahynm^iNX2*F}# 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 UQ{MjKzxB(1^Phe3Km8y7KZ+@pp#T5? diff --git a/config/izpack/install-nsc.xml b/config/izpack/install-nsc.xml deleted file mode 100644 index 08737a42f..000000000 --- a/config/izpack/install-nsc.xml +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - Scala - @VERSION@ - @URL@ - 1.4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Installing the Scala software. - - - - - - - - - - - - - - - - - - - - - -Djava.library.path=$INSTALL_PATH\Uninstaller - -cp - $INSTALL_PATH\Uninstaller\registry.jar;$INSTALL_PATH\Uninstaller\setenv.jar - Main - @VERSION@ - - - - - diff --git a/config/izpack/izpack_process.xml b/config/izpack/izpack_process.xml deleted file mode 100644 index ed5982707..000000000 --- a/config/izpack/izpack_process.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - $INSTALL_PATH/Uninstaller - - - - - Create symbolic links - - - ../share/@PREFIX@/bin/.scala_wrapper - - - .scala_wrapper - - - - Clean up - - - -f - $INSTALL_PATH/bin/.nsc_symlink - $INSTALL_PATH/share/@PREFIX@/bin/.nsc_symlink - - - - - - - Add the SCALA_HOME variable to the user environment - - - -Djava.library.path=$INSTALL_PATH\Uninstaller - -cp - $INSTALL_PATH\Uninstaller\registry.jar;$INSTALL_PATH\Uninstaller\setenv.jar - Main - @VERSION@ - $INSTALL_PATH - - - - diff --git a/config/izpack/izpack_scala.xml b/config/izpack/izpack_scala.xml deleted file mode 100644 index 282ed59e3..000000000 --- a/config/izpack/izpack_scala.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - - - Scala - 1.4.0.1 - - http://scala.epfl.ch/ - 1.4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Installing the Scala software. - - - - - - - - - - - - - diff --git a/config/izpack/izpack_shortcut.xml b/config/izpack/izpack_shortcut.xml deleted file mode 100644 index 4d396dea1..000000000 --- a/config/izpack/izpack_shortcut.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/config/izpack/locales/INFO_de.html b/config/izpack/locales/INFO_de.html deleted file mode 100644 index 8ca5c531c..000000000 --- a/config/izpack/locales/INFO_de.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - -

- IzPack führt Sie durch - die Installation von Scala @VERSION@. -

-

- Scala erfordert Sun JDK/JRE - version 1.4 oder neuer. -

-

- Sie können die Installation jederzeit abbrechen, indem - Sie auf 'Beenden' klicken. -

- - diff --git a/config/izpack/locales/INFO_en.html b/config/izpack/locales/INFO_en.html deleted file mode 100644 index 3112960fe..000000000 --- a/config/izpack/locales/INFO_en.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - -

- IzPack will guide you through - the installation of Scala @VERSION@. -

-

- Scala requires Sun JDK/JRE - version 1.4 or newer. -

-

- You may cancel this installation at any time by clicking the - 'Quit' button. -

- - diff --git a/config/izpack/locales/INFO_fr.html b/config/izpack/locales/INFO_fr.html deleted file mode 100644 index 9edfe4455..000000000 --- a/config/izpack/locales/INFO_fr.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - -

- IzPack will guide you through - the installation of Scala @VERSION@. -

-

- Scala requiert Sun JDK/JRE - version 1.4 ou plus récent. -

-

- Vous pouvez abandonner l'installation à tout moment - en cliquant sur 'Quitter'. -

- - diff --git a/config/izpack/locales/LICENSE_de.html b/config/izpack/locales/LICENSE_de.html deleted file mode 100644 index 90b5da193..000000000 --- a/config/izpack/locales/LICENSE_de.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - -
-SCALA LIZENZ -
- -

-Copyright © 2002-05 EPFL, Lausanne. -Alle Rechte vorbehalten. -

- -

-Diese Software wurde von der Gruppe Methoden der Programmierung an -der Eidgenössiche Technische Hochschule von Lausanne, Schweiz, -entwickelt. -

- -

-Die Genehmigung zum Verwenden, Kopieren, Ändern and Weitervertreiben -dieser Software im Quell- und Binärformat zu einem beliebigen Zweck -wird hiermit ohne Gebühr erteilt, sofern folgende Konditionen -erfüllt sind: -

- -
    -
  1. - Bei Weitervertrieb des Quellcodes müssen vorstehender - Urheberrechtshinweis, diese Liste der Konditionen und die folgende - Verzichtserklärung beibehalten werden. -
  2. -
  3. - Bei Weitervertrieb im Binärformat müssen in der Dokumentation - und/oder anderen Materialien, die vertrieben werden, vorstehender - Urheberrechtshinweis, diese Liste der Konditionen und die folgende - Verzichtserklärung reproduziert werden. -
  4. -
  5. - Neither the name of the EPFL nor the names of its contributors - may be used to endorse or promote products derived from this - software without specific prior written permission. -
  6. -
- -

-DIESE SOFTWARE WIRD VON DEN AUTOREN WIE BESEHEN UND UNTER AUSSCHLUSS ALLER -AUSDRÜCKLICHEN ODER KONKLUDENTEN GARANTIEN ZUR VERFÃœGUNG GESTELLT, -EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF KONKLUDENTE GARANTIEN DER -HANDELSÜBLICHKEIT UND/ODER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. -UNTER KEINEN UMSTÄNDEN KÖNNEN DIE AUTOREN FÜR DIREKTE, INDIREKTE, -ZUFÄLLIGE, BESONDERE, EXEMPLARISCHE ODER FOLGESCHÄDEN (EINSCHLIESSLICH -VON, ABER NICHT BESCHRÄNKT AUF, BESCHAFFUNG VON ERSATZWAREN ODER -ERSATZLEISTUNGEN, ENTGANGENEM NUTZEN, VERLUST VON DATEN, ENTGANGENEM GEWINN -ODER GESCHÄFTSAUSFALL) HAFTBAR GEMACHT WERDEN, DIE AUS EINER BELIEBIGEN -URSACHE UND AUF GRUNDLAGE IRGENDEINES HAFTBARKEITSVERSTÄNDNISSES ENTSTEHEN, -UNABHÄNGIG VON VERTRÄGEN, DER GEFÄHRDUNGSHAFTUNG ODER UNERLAUBTEN -HANDLUNGEN (EINSCHLIESSLICH FAHRLÄSSIGKEIT ODER ANDERWEITIG), DIE IN -IRGENDEINER WEISE DURCH DIE VERWENDUNG DIESER SOFTWARE ENTSTEHEN, AUCH DANN, -WENN DIE AUTOREN ÜBER DIE MÖGLICHKEIT SOLCHER SCHÄDEN UNTERRICHTET WURDEN. -

- - - - diff --git a/config/izpack/locales/LICENSE_en.html b/config/izpack/locales/LICENSE_en.html deleted file mode 100644 index 59ef4cc4e..000000000 --- a/config/izpack/locales/LICENSE_en.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - -
-SCALA LICENSE -
- -

-Copyright © 2002-05 EPFL, Lausanne. -All rights reserved. -

- -

-This software was developed by the Programming Methods Laboratory of -the Swiss Federal Institute of Technology, Lausanne, Switzerland. -

- -

-Permission to use, copy, modify, and distribute this software in source -or binary form for any purpose with or without fee is hereby granted, -provided that the following conditions are met: -

- -
    -
  1. - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -
  2. -
  3. - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -
  4. -
  5. - Neither the name of the EPFL nor the names of its contributors - may be used to endorse or promote products derived from this - software without specific prior written permission. -
  6. -
- -

-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. -

- - - diff --git a/config/izpack/locales/LICENSE_fr.html b/config/izpack/locales/LICENSE_fr.html deleted file mode 100644 index dab0ccd67..000000000 --- a/config/izpack/locales/LICENSE_fr.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - -
-LICENCE SCALA -
- -

-Copyright © 2002-05 EPFL, Lausanne. -Tous droits réservés. -

- -

-Ce logiciel a été développé par le Laboratoire -des Méthodes de Programmation de l'Ecole Polytechnique -Fédérale de Lausanne (EPFL), Suisse. -

- -

-L'utilisation, la modification et la redistribution de ce logiciel sous forme -de code source et/ou binaire, dans un but commercial ou non, sont permis -étant entendu que les conditions suivantes sont satisfaites: -

- -
    -
  1. - Toute redistribution du code source doit contenir la notice de droits - d'auteur ci-dessus, la présente liste des conditions - d'utilisation et l'avis de non-responsabilité mentionné - plus bas. -
  2. -
  3. - Toute redistribution du code binaire doit contenir la notice de droits - d'auteur ci-dessus, la présente liste des conditions d'utilisation - et l'avis de non-responsabilité mentionné plus bas dans - la documentation et/ou tout autre support fourni dans la distribution. -
  4. -
  5. - Ni le nom de l'EPFL, ni celui des personnes qui ont - contribué au développement de ce logiciel ne peuvent - être utilisés dans le but de promouvoir des produits - dérivés de ce logiciel sans permission écrite - préalable. -
  6. -
- -

-CE LOGICIEL EST FOURNI "EN L'ÉTAT" SANS GARANTIE AUCUNE QUANT -À SON UTILISATION, Y COMPRIS, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. EN AUCUN CAS L'UNIVERSITÉ OU QUICONQUE AYANT -CONTRIBUÉ AU DÉVELOPPEMENT DU LOGICIEL NE SAURAIT ÊTRE -TENU RESPONSABLE DE TOUS DOMMAGES DIRECTS OU INDIRECTS, CONSÉCUTIFS -À L'UTILISATION DU LOGICIEL ET, NOTAMMENT DE TOUTES PERTES DE PROFITS -OU MANQUES À GAGNER, PERTE D'INFORMATION, DÉFAILLANCE -D'ORDINATEUR, INTERRUPTION DE TRAVAIL OU AUTRES DÉGÂTS, ET -CELA QUAND BIEN MÊME UN REPRÉSENTANT DE L'UNIVERSITÉ -AURAIT ÉTÉ INFORMÉ DE LA POSSIBILITÉ DE TELS -DOMMAGES. -

- -

-Seule la version anglaise de ce contrat fait foi juridiquement. -Les traductions en d'autres langues sont fournies aux usagers à -titre indicatif, mais elles ne sont pas nécessairement exactes -d'un point de vue juridique. -

- - - diff --git a/config/izpack/registry/bin/ICE_JNIRegistry.dll b/config/izpack/registry/bin/ICE_JNIRegistry.dll deleted file mode 100644 index 5463a70a40e50971ad1889582296566dc088a7f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65536 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 diff --git a/config/izpack/registry/bin/readme.txt b/config/izpack/registry/bin/readme.txt deleted file mode 100644 index 19b873193..000000000 --- a/config/izpack/registry/bin/readme.txt +++ /dev/null @@ -1,50 +0,0 @@ - - Windows Registry API Native Interface - -*Release 3.1.3, September 11, 2003* - -The com.ice.jni.registry package is a Java native interface for the -Windows Registry API. This allows Java program to access, modify, and -export Windows Registry resources. - -The com.ice.jni.registry package has been placed into the public domain. -Thus, you have absolutely no licensing issues to consider. You may do -anything you wish with the code. Of course, I always appreciate it when -you properly credit my work. - -The package will work only with Java 1.1 and greater, and uses the -Javasoft native interface, not the Netscape interface. The package also -includes a DLL that implements the interface. The package has been used -with JDK1.2, and JDK1.3, JDK1.4, as well as JDK1.1.8. - -The package includes the pre-built DLL (debug and release), source code -(both the Java and the DLL's C code), as well as the compiled Java classes. - -The original release was posted on November 17, 1997. The current -release is 3.1.3, which was posted on September 11, 2003. - -Email me if you have questions. - - - View The Source Code - -You can now directly view the JNIRegistry source code - and -source code documentation - -online via the Giant Java Tree. - - - Downloads - -Download the WinZip-ed package. (FTP) - - -Download the WinZip-ed package. (HTTP) - - - ------------------------------------------------------------------------- -* All contents are copyrighted (c) by ICE Engineering, Inc. * -http://www.trustice.com/ --- http://www.icetoo.com/ - diff --git a/config/izpack/registry/bin/registry.jar b/config/izpack/registry/bin/registry.jar deleted file mode 100644 index 2aefa0f39f3fd411f69737a70f018518ceadd687..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26435 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 diff --git a/config/izpack/registry/src/MANIFEST.MF b/config/izpack/registry/src/MANIFEST.MF deleted file mode 100644 index a99365f10..000000000 --- a/config/izpack/registry/src/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Created-By: 1.4.2_09 (Sun Microsystems Inc.) -Main-Class: Main diff --git a/config/izpack/registry/src/Main.java b/config/izpack/registry/src/Main.java deleted file mode 100644 index ab7b7a7a7..000000000 --- a/config/izpack/registry/src/Main.java +++ /dev/null @@ -1,120 +0,0 @@ -// File : Main.java -// Project : Scala -// Author(s) : Stephane Micheloud (mics) -// Environment: JNI Registry 3.1.3, Sun JDK 1.4.2_09 -// Version : 01 -// Created : 25.09.2005/mics -// Modified : - - - -import com.ice.jni.registry.NoSuchKeyException; -import com.ice.jni.registry.NoSuchValueException; -import com.ice.jni.registry.Registry; -import com.ice.jni.registry.RegistryException; -import com.ice.jni.registry.RegistryKey; -import com.ice.jni.registry.RegistryValue; -import com.ice.jni.registry.RegMultiStringValue; -import com.ice.jni.registry.RegStringValue; - -public class Main { - - private static final String PATH = "PATH"; - private static final String SCALA_HOME = "SCALA_HOME"; - private static final String SCALA_BIN = "%" + SCALA_HOME + "%\\bin"; - - private static void updateRegistry(String homePath, String fullName) throws RegistryException { - // HKEY_CURRENT_USER\Environment - RegistryKey envKey = Registry.openSubkey( - Registry.HKEY_CURRENT_USER, - "Environment", - RegistryKey.ACCESS_ALL); - if (homePath != null) { - // set home directory - RegStringValue data = new RegStringValue(envKey, SCALA_HOME, homePath); - envKey.setValue(data); - // update user path - String path = envKey.getStringValue(PATH); - if (path.indexOf(SCALA_BIN) < 0) { - int inx = path.lastIndexOf(";"); - StringBuffer buf = new StringBuffer(path); - if (0 < inx && inx < path.length()-1) - buf.append(";"); - buf.append(SCALA_BIN); - data = new RegStringValue(envKey, PATH, buf.toString()); - envKey.setValue(data); - } - } - else { // uninstall - // remove home directory - try { - envKey.deleteValue(SCALA_HOME); - } - catch (NoSuchValueException e) { - // do nothing - } - String path = envKey.getStringValue(PATH); - int inx1 = path.indexOf(SCALA_BIN); - if (inx1 >= 0) { - int inx2 = path.indexOf(";", inx1); - StringBuffer buf = new StringBuffer(path.substring(0, inx1)); - if (inx2 >= 0) - buf.append(path.substring(inx2)); - RegStringValue data = new RegStringValue(envKey, PATH, buf.toString()); - envKey.setValue(data); - } - } - - // HKEY_CURRENT_USER\Software - RegistryKey softwareKey = Registry.openSubkey( - Registry.HKEY_CURRENT_USER, - "Software", - RegistryKey.ACCESS_WRITE); - if (homePath != null) { - RegistryKey productKey = softwareKey.createSubKey( - fullName, - "java.lang.String", - RegistryKey.ACCESS_WRITE); - RegStringValue data = new RegStringValue(productKey, "Location", homePath); - productKey.setValue(data); - } - else { // uninstall - try { - softwareKey.deleteSubKey(fullName); - String name = fullName; - int inx = name.lastIndexOf("\\"); - while (inx != -1) { - String parentName = name.substring(0, inx); - RegistryKey key = softwareKey.openSubKey(parentName, RegistryKey.ACCESS_READ); - int n = key.getNumberSubkeys(); - if (n == 0) softwareKey.deleteSubKey(parentName); - name = parentName; - inx = name.lastIndexOf("\\"); - } - } - catch (NoSuchKeyException e) { - // do nothing - } - } - } - - public static void main(String[] args) { - int argc = args.length; - if (argc != 1 && argc != 2) { - System.out.println("Usage: java Main [ ]\n"); - System.out.println("\tversion number (e.g. 1.4.0.1)"); - System.out.println("\tinstall path (e.g. c:\\\\Program Files\\\\Scala)"); - System.out.println(); - System.exit((argc > 0) ? 1 : 0); - } - String homePath = (argc == 2) ? args[1] : null; // e.g. "C:\\Program Files\\Scala" - String fullName = "EPFL\\Scala\\" + args[0]; // e.g. "EPFL\\Scala\\1.4.0.1" - try { - updateRegistry(homePath, fullName); - } - catch (RegistryException e) { - System.out.println(e.getMessage()); - System.exit(1); - } - } - -} diff --git a/config/izpack/targets/path_macosx.txt b/config/izpack/targets/path_macosx.txt deleted file mode 100644 index bbae42e6b..000000000 --- a/config/izpack/targets/path_macosx.txt +++ /dev/null @@ -1 +0,0 @@ -/usr/local/ diff --git a/config/izpack/targets/path_unix.txt b/config/izpack/targets/path_unix.txt deleted file mode 100644 index bbae42e6b..000000000 --- a/config/izpack/targets/path_unix.txt +++ /dev/null @@ -1 +0,0 @@ -/usr/local/ diff --git a/newsources/scala/CaseClass.scala b/newsources/scala/CaseClass.scala deleted file mode 100644 index e644a0375..000000000 --- a/newsources/scala/CaseClass.scala +++ /dev/null @@ -1,32 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2002-2004, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -** $Id$ -\* */ - -package scala; - -/** defines an access function for instances of case classes - * - * @author Burak Emir - */ -trait CaseClass extends AnyRef { - - /** for a case class A(x_0,...,x_(k-1)), returns x_i for 0 <= i < k, - ** null otherwise - */ - def caseElement(n: Int): Any ; - - /** need also, for reflection - def setCaseElement(n: Int, v: Any): unit - */ - - /** for a case class A(x_0,...,x_(k-1)), returns k - */ - def caseArity: Int; - - def caseName: String; -} diff --git a/sources/bin/izpack.symlink.tmpl b/sources/bin/izpack.symlink.tmpl deleted file mode 100644 index 009f8b6ee..000000000 --- a/sources/bin/izpack.symlink.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -DIRNAME="dirname" -LN="/bin/ln -sf" - -COMMANDS="scala scalac scaladoc scalap" - -cd `$DIRNAME $0` && \ -for cmd in $COMMANDS; do $LN $1 $cmd; done - -# $Id$ diff --git a/sources/msil/scala_part2.il.diff.tmpl b/sources/msil/scala_part2.il.diff.tmpl deleted file mode 100644 index 8f63867b2..000000000 --- a/sources/msil/scala_part2.il.diff.tmpl +++ /dev/null @@ -1,21 +0,0 @@ ---- scala_part2.il 2005-09-21 16:19:30.676754000 +0200 -+++ scala_part2.il.new 2005-09-21 16:21:58.522947000 +0200 -@@ -1,18 +1,3 @@ --.assembly extern 'mscorlib' --{ -- .ver 1:0:3300:0 -- .publickeytoken = (b7 7a 5c 56 19 34 e0 89) --} --.assembly extern 'scala_part1' --{ -- .ver SCALA_VERSION -- .publickeytoken = (80 07 fc 78 8a 2e 53 08) --} --.assembly 'scala_part2' --{ --} --.module 'scala_part2.dll' -- - .namespace 'scala' - { - .class public auto ansi interface 'Tuple1' diff --git a/sources/scala/Array.cs b/sources/scala/Array.cs deleted file mode 100644 index f48f18d5e..000000000 --- a/sources/scala/Array.cs +++ /dev/null @@ -1,35 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2002, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -using System; -using scala.runtime; - -namespace scala -{ - - [Meta("class [?T] extends scala.AnyRef;")] - [Serializable] - public abstract class Array /*: Cloneable*/ - { - - [Meta("constr (scala.Int);")] - public Array() {} - - [Meta("method []scala.Array[?T];")] - public abstract object value(); - - [Meta("method []scala.Int;")] - public abstract int length(); - [Meta("method (scala.Int)?T;")] - public abstract object apply(int i); - [Meta("method (scala.Int,?T)scala.Unit;")] - public abstract void update(int i, object x); - } -} diff --git a/sources/scala/Array.java b/sources/scala/Array.java deleted file mode 100644 index df8588851..000000000 --- a/sources/scala/Array.java +++ /dev/null @@ -1,29 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2002, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala; - -/** @meta class [?T] extends scala.AnyRef with java.lang.Cloneable with java.io.Serializable; */ -public abstract class Array implements Cloneable, java.io.Serializable { - - /** @meta constr (scala.Int); */ - public Array() {} - - /** @meta method []scala.Array[?T]; */ - public abstract Object value(); - - /** @meta method []scala.Int; */ - public abstract int length(); - /** @meta method (scala.Int)?T; */ - public abstract Object apply(int i); - /** @meta method (scala.Int,?T)scala.Unit; */ - public abstract void update(int i, Object x); - -} diff --git a/sources/scala/MatchError.cs b/sources/scala/MatchError.cs deleted file mode 100644 index 1ce0b37b0..000000000 --- a/sources/scala/MatchError.cs +++ /dev/null @@ -1,62 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2002, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -** ** -** $Id$ -\* */ -using System; -using scala.runtime; - -namespace scala -{ - - - /** This class implements errors which are thrown whenever an - * object doesn't match any pattern of a pattern matching - * expression. - * - * @author Matthias Zenger - * @version 1.1, 05/03/2004 - */ - public sealed class MatchError : ApplicationException - { - - [Meta("constr (System.String, scala.Int);")] - private MatchError(string source, int line) : - base(" in '" + source + "' at line " + line) - { - } - - [Meta("constr (System.String, scala.Int, System.String);")] - private MatchError(string source, int line, string obj) : - base("for object " + obj + " in '" + source + "' at line " + line) - { - } - - [Meta("method [?T](System.String, scala.Int) ?T;")] - public static object fail(string source, int line) - { - throw new MatchError(source, line); - } - - [Meta("method [?T](System.String, scala.Int, scala.Any) ?T;")] - public static object report(string source, int line, object obj) - { - try - { - throw new MatchError(source, line, obj.ToString()); - } - catch (MatchError e) - { - throw e; - } - catch (Exception e) - { - throw new MatchError(source, line); - } - } - } -} \ No newline at end of file diff --git a/sources/scala/MatchError.java b/sources/scala/MatchError.java deleted file mode 100644 index 8f53ce9c7..000000000 --- a/sources/scala/MatchError.java +++ /dev/null @@ -1,52 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2002, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -** ** -** $Id$ -\* */ - -package scala; - - -/** This class implements errors which are thrown whenever an - * object doesn't match any pattern of a pattern matching - * expression. - * - * @author Matthias Zenger - * @version 1.1, 05/03/2004 - */ -public final class MatchError extends Error { - - /** @meta constr (java.lang.String, scala.Int); - */ - private MatchError(java.lang.String source, int line) { - super(" in '" + source + "' at line " + line); - } - - /** @meta constr (java.lang.String, scala.Int, java.lang.String); - */ - private MatchError(java.lang.String source, int line, String obj) { - super("for object " + obj + " in '" + source + "' at line " + line); - } - - /** @meta method [?T](java.lang.String, scala.Int) ?T; - */ - public static java.lang.Object fail(java.lang.String source, int line) { - throw new MatchError(source, line); - } - - /** @meta method [?T](java.lang.String, scala.Int, scala.Any) ?T; - */ - public static java.lang.Object report(java.lang.String source, int line, java.lang.Object obj) { - try { - throw new MatchError(source, line, obj.toString()); - } catch (MatchError e) { - throw e; - } catch (Throwable e) { - throw new MatchError(source, line); - } - } -} diff --git a/sources/scala/ScalaObject.java b/sources/scala/ScalaObject.java deleted file mode 100644 index c958960a0..000000000 --- a/sources/scala/ScalaObject.java +++ /dev/null @@ -1,27 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2002, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala; - -import scala.runtime.types.ClassType; - -/** @meta class extends scala.AnyRef; - */ -public interface ScalaObject { - /** - * Return the Scala type of the object. - */ - public ClassType getScalaType(); - - /** This method is needed for optimizing pattern matching expressions - * which match on constructors of case classes. - */ - public int $tag(); -} diff --git a/sources/scala/Type.java b/sources/scala/Type.java deleted file mode 100644 index 288bb634f..000000000 --- a/sources/scala/Type.java +++ /dev/null @@ -1,160 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala; - -import scala.runtime.RunTime; -import scala.runtime.types.ScalaClassType; -import scala.runtime.types.JavaClassType; -import scala.runtime.types.TypeBoolean; -import scala.runtime.types.TypeByte; -import scala.runtime.types.TypeChar; -import scala.runtime.types.TypeDouble; -import scala.runtime.types.TypeFloat; -import scala.runtime.types.TypeInt; -import scala.runtime.types.TypeLong; -import scala.runtime.types.TypeShort; -import scala.runtime.types.TypeUnit; -import scala.runtime.types.TypeAll; -import scala.runtime.types.TypeAllRef; -import scala.runtime.types.TypeAny; -import scala.runtime.types.TypeAnyVal; -import scala.runtime.types.Statistics; - -import scala.runtime.FNV_Hash; - -/** - * Run-time types for Scala. - * - * @author Michel Schinz - * @version 1.0 - */ - -abstract public class Type implements java.io.Serializable { - public Type() { - assert Statistics.incInstances(getClass().getName(), this); - } - - protected static ThreadLocal unsafeArraysAllowed = new BooleanThreadLocal(); - - /* - * Allow (or not) the creation of "unsafe" arrays for the current - * thread. - */ - public static void allowUnsafeArrays(boolean allow) { - unsafeArraysAllowed.set(allow - ? java.lang.Boolean.TRUE - : java.lang.Boolean.FALSE); - } - - /** @meta method [?T](scala.Int) scala.Array[?T]; */ - abstract public Array newArray(int size); - - /** Return the default value for the type (_ in Scala) */ - abstract public Object defaultValue(); - - /** - * Return true iff the given object is an instance of a subtype of - * this type (implement Scala's isInstanceOf operation). - */ - abstract public boolean isInstance(Object o); - - abstract public boolean isSameType(Type that); - abstract public boolean isSubType(Type that); - - public boolean isSameAsJavaType(Class that) { - throw new Error("cannot compare Scala type " + this - + " with Java type " + that); - } - - public boolean equals(Object that) { - return (that instanceof Type) && this.isSameType((Type)that); - } - - public int hashCode() { - throw new Error("missing hashCode implementation in class " - + this.getClass()); - } - - /** - * Check that the given object can be cast to this type, and throw - * an exception if this is not possible (implement Scala's - * asInstanceOf operation). - */ - public Object cast(Object o) { - assert Statistics.incTypeCast(); - if (o == null) { - if (this.isSubType(JavaLangObject)) - return null; - else - throw new ClassCastException(); - } else { - assert Statistics.decInstanceOf(); - if (isInstance(o)) - return o; - else - throw new ClassCastException("\n" + ((ScalaObject)o).getScalaType() - + "\n" + this.toString()); - } - } - - // Value types - public static final TypeDouble Double = TypeDouble.INSTANCE; - public static final TypeFloat Float = TypeFloat.INSTANCE; - public static final TypeLong Long = TypeLong.INSTANCE; - public static final TypeInt Int = TypeInt.INSTANCE; - public static final TypeShort Short = TypeShort.INSTANCE; - public static final TypeChar Char = TypeChar.INSTANCE; - public static final TypeByte Byte = TypeByte.INSTANCE; - public static final TypeBoolean Boolean = TypeBoolean.INSTANCE; - public static final TypeUnit Unit = TypeUnit.INSTANCE; - - // "Special" types - public static final TypeAny Any = TypeAny.INSTANCE; - public static final TypeAnyVal AnyVal = TypeAnyVal.INSTANCE; - public static final TypeAllRef AllRef = TypeAllRef.INSTANCE; - public static final TypeAll All = TypeAll.INSTANCE; - - private static JavaClassType JavaLangObject; - - static { - try { - JavaLangObject = new JavaClassType("java.lang.Object"); - } catch (ClassNotFoundException e) { - throw new Error(e); - } - } - - public static boolean isSameType(Type[] these, Type[] those) { - if (these.length != those.length) - return false; - for (int i = 0; i < these.length; ++i) { - if (!these[i].isSameType(those[i])) - return false; - } - return true; - } - - public static int hashCode(Type[] types) { - final int len = types.length; - - int h = FNV_Hash.INIT; - for (int i = 0; i < len; ++i) - h = FNV_Hash.hashStep32(h, types[i].hashCode()); - - return h; - } -} - -class BooleanThreadLocal extends ThreadLocal { - protected Object initialValue() { - return java.lang.Boolean.TRUE; - } -} diff --git a/sources/scala/runtime/RunTime.cs b/sources/scala/runtime/RunTime.cs deleted file mode 100644 index eadb95bac..000000000 --- a/sources/scala/runtime/RunTime.cs +++ /dev/null @@ -1,513 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2002, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $OldId: RunTime.java,v 1.13 2002/11/19 12:01:40 paltherr Exp $ -// $Id$ - -using System; -using scala; - -namespace scala.runtime -{ - - public abstract class RunTime - { - - //######################################################################## - // Private Constants - - private static readonly int BITS = 8; - private static readonly int ARRAY_SIZE = 2 << BITS; - private static readonly int INDEX_MASK = ARRAY_SIZE - 1; - private static readonly int CHECK_MASK = ~(ARRAY_SIZE / 2 - 1); - - private static readonly UValue uvalue = new UValue(); - private static readonly ZValue zvalue_f = new ZValue(false); - private static readonly ZValue zvalue_t = new ZValue(true); - private static readonly BValue[] bvalue = new BValue[256]; - private static readonly SValue[] svalue = new SValue[ARRAY_SIZE]; - private static readonly CValue[] cvalue = new CValue[ARRAY_SIZE / 2]; - private static readonly IValue[] ivalue = new IValue[ARRAY_SIZE]; - private static readonly LValue[] lvalue = new LValue[ARRAY_SIZE]; - - static RunTime() - { - for (int i = 0; i < bvalue.Length; i++) - bvalue[i] = new BValue((sbyte)i); - for (int i = 0; i < ARRAY_SIZE / 2; i++) - { - svalue[i] = new SValue((short)i); - cvalue[i] = new CValue((char )i); - ivalue[i] = new IValue((int )i); - lvalue[i] = new LValue((long )i); - svalue[i + ARRAY_SIZE / 2] = new SValue((short)(CHECK_MASK | i)); - ivalue[i + ARRAY_SIZE / 2] = new IValue((int )(CHECK_MASK | i)); - lvalue[i + ARRAY_SIZE / 2] = new LValue((long )(CHECK_MASK | i)); - } - } - - //######################################################################## - // Private Variables - - //private static ClassLoader loader = ClassLoader.getSystemClassLoader(); - - //######################################################################## - // Public Functions - Getting & setting class loader - -// public static ClassLoader getClassLoader() -// { -// return loader; -// } -// -// public static void setClassLoader(ClassLoader loader) -// { -// RunTime.loader = loader; -// } - - //######################################################################## - // Public Functions - Catching exceptions - public interface Runnable { - void run(); - } - - public static Exception tryCatch(Runnable runnable) - { - try - { - runnable.run(); - return null; - } - catch (Exception exception) - { - return exception; - } - } - - //######################################################################## - // Public Functions - Boxing primitives - - public static Unit box_uvalue( ) - { - return uvalue; - } - - public static Boolean box_zvalue(bool x) - { - return x ? zvalue_t : zvalue_f; - } - - public static Byte box_bvalue(sbyte x) - { - return bvalue[x & 0x000000FF]; - } - - public static Short box_svalue(short x) - { - int c = x & CHECK_MASK; - if (c == 0 || c == CHECK_MASK) return svalue[x & INDEX_MASK]; - return new SValue(x); - } - - public static Char box_cvalue(char x) - { - int c = (int)x & CHECK_MASK; - if (c == 0) return cvalue[(int)x & INDEX_MASK]; - return new CValue(x); - } - - public static Int box_ivalue(int x) - { - int c = x & CHECK_MASK; - if (c == 0 || c == CHECK_MASK) return ivalue[x & INDEX_MASK]; - return new IValue(x); - } - - public static Long box_lvalue(long x) - { - long c = x & CHECK_MASK; - if (c == 0 || c == CHECK_MASK) return lvalue[(int)x & INDEX_MASK]; - return new LValue(x); - } - - public static Float box_fvalue(float x) - { - return new FValue(x); - } - - public static Double box_dvalue(double x) - { - return new DValue(x); - } - - /** @meta method (scala.Array[scala.Boolean]) scala.Array[scala.Boolean];*/ - public static Array box_zarray(bool[] xs) - { - return new ZArray(xs); - } - - /** @meta method (scala.Array[scala.Byte]) scala.Array[scala.Byte]; */ - public static Array box_barray(sbyte [] xs) - { - return new BArray(xs); - } - - /** @meta method (scala.Array[scala.Short]) scala.Array[scala.Short]; */ - public static Array box_sarray(short [] xs) - { - return new SArray(xs); - } - - /** @meta method (scala.Array[scala.Char]) scala.Array[scala.Char]; */ - public static Array box_carray(char [] xs) - { - return new CArray(xs); - } - - /** @meta method (scala.Array[scala.Int]) scala.Array[scala.Int]; */ - public static Array box_iarray(int [] xs) - { - return new IArray(xs); - } - - /** @meta method (scala.Array[scala.Long]) scala.Array[scala.Long]; */ - public static Array box_larray(long [] xs) - { - return new LArray(xs); - } - - /** @meta method (scala.Array[scala.Float]) scala.Array[scala.Float]; */ - public static Array box_farray(float [] xs) - { - return new FArray(xs); - } - - /** @meta method (scala.Array[scala.Double]) scala.Array[scala.Double]; */ - public static Array box_darray(double [] xs) - { - return new DArray(xs); - } - - /** @meta method [?T < scala.AnyRef](scala.Array[?T]) scala.Array[?T]; */ - public static Array box_oarray(object [] xs) - { - return new OArray(xs); - } - - /** @meta method [?T](scala.Array[?T]) scala.Array[?T]; */ - public static Array box__array(object xs) - { - if (xs == null ) return box_oarray((object [])xs); - if (xs is bool[]) return box_zarray((bool[])xs); - if (xs is sbyte []) return box_barray((sbyte [])xs); - if (xs is short []) return box_sarray((short [])xs); - if (xs is char []) return box_carray((char [])xs); - if (xs is int []) return box_iarray((int [])xs); - if (xs is long []) return box_larray((long [])xs); - if (xs is float []) return box_farray((float [])xs); - if (xs is double []) return box_darray((double [])xs); - if (xs is object []) return box_oarray((object [])xs); - throw new InvalidCastException(xs.GetType() + " is not an array class"); - } - - //######################################################################## - // Public Functions - Unboxing primitives - - public static void unbox_uvalue(Unit x) { x.value(); } - public static bool unbox_zvalue(Boolean x) { return x.value ; } - public static sbyte unbox_bvalue(Byte x) { return x.value ; } - public static short unbox_svalue(Short x) { return x.value ; } - public static char unbox_cvalue(Char x) { return x.value ; } - public static int unbox_ivalue(Int x) { return x.value ; } - public static long unbox_lvalue(Long x) { return x.value ; } - public static float unbox_fvalue(Float x) { return x.value ; } - public static double unbox_dvalue(Double x) { return x.value ; } - - /** @meta method (scala.Array[scala.Boolean]) scala.Array[scala.Boolean];*/ - public static bool[] unbox_zarray(Array xs) - { - return xs == null ? null : ((ZArray)xs)._value; - } - /** @meta method (scala.Array[scala.Byte]) scala.Array[scala.Byte]; */ - public static sbyte [] unbox_barray(Array xs) - { - return xs == null ? null : ((BArray)xs)._value; - } - /** @meta method (scala.Array[scala.Short]) scala.Array[scala.Short]; */ - public static short [] unbox_sarray(Array xs) - { - return xs == null ? null : ((SArray)xs)._value; - } - /** @meta method (scala.Array[scala.Char]) scala.Array[scala.Char]; */ - public static char [] unbox_carray(Array xs) - { - return xs == null ? null : ((CArray)xs)._value; - } - /** @meta method (scala.Array[scala.Int]) scala.Array[scala.Int]; */ - public static int [] unbox_iarray(Array xs) - { - return xs == null ? null : ((IArray)xs)._value; - } - /** @meta method (scala.Array[scala.Long]) scala.Array[scala.Long]; */ - public static long [] unbox_larray(Array xs) - { - return xs == null ? null : ((LArray)xs)._value; - } - /** @meta method (scala.Array[scala.Float]) scala.Array[scala.Float]; */ - public static float [] unbox_farray(Array xs) - { - return xs == null ? null : ((FArray)xs)._value; - } - /** @meta method (scala.Array[scala.Double]) scala.Array[scala.Double]; */ - public static double [] unbox_darray(Array xs) - { - return xs == null ? null : ((DArray)xs)._value; - } - /** @meta method [?T < scala.AnyRef](scala.Array[?T]) scala.Array[scala.AnyRef]; */ - public static object [] unbox_oarray(Array xs) - { - return xs == null ? null : ((OArray)xs)._value; - } - /** @meta method [?T](scala.Array[?T]) scala.AnyRef; */ - public static object unbox__array(Array xs) - { - return xs == null ? null : xs.value(); - } - - //######################################################################## - // Public Functions - Conversion primitives - - public static sbyte b2b(sbyte x) { return (sbyte )x; } - public static short b2s(sbyte x) { return (short )x; } - public static char b2c(sbyte x) { return (char )x; } - public static int b2i(sbyte x) { return (int )x; } - public static long b2l(sbyte x) { return (long )x; } - public static float b2f(sbyte x) { return (float )x; } - public static double b2d(sbyte x) { return (double)x; } - public static sbyte s2b(short x) { return (sbyte )x; } - public static short s2s(short x) { return (short )x; } - public static char s2c(short x) { return (char )x; } - public static int s2i(short x) { return (int )x; } - public static long s2l(short x) { return (long )x; } - public static float s2f(short x) { return (float )x; } - public static double s2d(short x) { return (double)x; } - public static sbyte c2b(char x) { return (sbyte )x; } - public static short c2s(char x) { return (short )x; } - public static char c2c(char x) { return (char )x; } - public static int c2i(char x) { return (int )x; } - public static long c2l(char x) { return (long )x; } - public static float c2f(char x) { return (float )x; } - public static double c2d(char x) { return (double)x; } - public static sbyte i2b(int x) { return (sbyte )x; } - public static short i2s(int x) { return (short )x; } - public static char i2c(int x) { return (char )x; } - public static int i2i(int x) { return (int )x; } - public static long i2l(int x) { return (long )x; } - public static float i2f(int x) { return (float )x; } - public static double i2d(int x) { return (double)x; } - public static sbyte l2b(long x) { return (sbyte )x; } - public static short l2s(long x) { return (short )x; } - public static char l2c(long x) { return (char )x; } - public static int l2i(long x) { return (int )x; } - public static long l2l(long x) { return (long )x; } - public static float l2f(long x) { return (float )x; } - public static double l2d(long x) { return (double)x; } - public static sbyte f2b(float x) { return (sbyte )x; } - public static short f2s(float x) { return (short )x; } - public static char f2c(float x) { return (char )x; } - public static int f2i(float x) { return (int )x; } - public static long f2l(float x) { return (long )x; } - public static float f2f(float x) { return (float )x; } - public static double f2d(float x) { return (double)x; } - public static sbyte d2b(double x) { return (sbyte )x; } - public static short d2s(double x) { return (short )x; } - public static char d2c(double x) { return (char )x; } - public static int d2i(double x) { return (int )x; } - public static long d2l(double x) { return (long )x; } - public static float d2f(double x) { return (float )x; } - public static double d2d(double x) { return (double)x; } - - //######################################################################## - // Public Functions - Array primitives - - public static bool[] zarray(int length) { return new bool[length]; } - public static sbyte [] barray(int length) { return new sbyte [length]; } - public static short [] sarray(int length) { return new short [length]; } - public static char [] carray(int length) { return new char [length]; } - public static int [] iarray(int length) { return new int [length]; } - public static long [] larray(int length) { return new long [length]; } - public static float [] farray(int length) { return new float [length]; } - public static double [] darray(int length) { return new double [length]; } - public static object oarray(int length, string classname) - { - try - { - Type clasz = Type.GetType(classname); - return System.Array.CreateInstance(clasz, length); - } - catch (Exception exception) - { - //throw new Error(exception.ToString()); - throw new ApplicationException(exception.ToString()); - } - } - - public static int zarray_length(bool[] xs) { return xs.Length; } - public static int barray_length(sbyte [] xs) { return xs.Length; } - public static int sarray_length(short [] xs) { return xs.Length; } - public static int carray_length(char [] xs) { return xs.Length; } - public static int iarray_length(int [] xs) { return xs.Length; } - public static int larray_length(long [] xs) { return xs.Length; } - public static int farray_length(float [] xs) { return xs.Length; } - public static int darray_length(double [] xs) { return xs.Length; } - public static int oarray_length(object [] xs) { return xs.Length; } - - public static bool zarray_get(bool[] xs, int i) { return xs[i]; } - public static sbyte barray_get(sbyte [] xs, int i) { return xs[i]; } - public static short sarray_get(short [] xs, int i) { return xs[i]; } - public static char carray_get(char [] xs, int i) { return xs[i]; } - public static int iarray_get(int [] xs, int i) { return xs[i]; } - public static long larray_get(long [] xs, int i) { return xs[i]; } - public static float farray_get(float [] xs, int i) { return xs[i]; } - public static double darray_get(double [] xs, int i) { return xs[i]; } - public static object oarray_get(object [] xs, int i) { return xs[i]; } - - public static void zarray_set(bool[] xs, int i, bool x) { xs[i] = x;} - public static void barray_set(sbyte [] xs, int i, sbyte x) { xs[i] = x;} - public static void sarray_set(short [] xs, int i, short x) { xs[i] = x;} - public static void carray_set(char [] xs, int i, char x) { xs[i] = x;} - public static void iarray_set(int [] xs, int i, int x) { xs[i] = x;} - public static void larray_set(long [] xs, int i, long x) { xs[i] = x;} - public static void farray_set(float [] xs, int i, float x) { xs[i] = x;} - public static void darray_set(double [] xs, int i, double x) { xs[i] = x;} - public static void oarray_set(object [] xs, int i, object x) { xs[i] = x;} - - //######################################################################## - } - - // These classes may not be defined in class RunTime because inner - // classes confuse pico which then attributes the metadata to the - // wrong members. - - sealed class UValue : Unit { public UValue( ) : base( ) { } } - sealed class ZValue : Boolean { public ZValue(bool x ) : base(x) { } } - sealed class BValue : Byte { public BValue(sbyte x) : base(x) { } } - sealed class SValue : Short { public SValue(short x) : base(x) { } } - sealed class CValue : Char { public CValue(char x) : base(x) { } } - sealed class IValue : Int { public IValue(int x) : base(x) { } } - sealed class LValue : Long { public LValue(long x) : base(x) { } } - sealed class FValue : Float { public FValue(float x) : base(x) { } } - sealed class DValue : Double { public DValue(double x) : base(x) { } } - - /** @meta class extends scala.Array[scala.Boolean]; */ - sealed class ZArray : Array - { - internal readonly bool[] _value; - public ZArray(bool[] _value) { this._value = _value; } - public override object value() { return _value; } - public override object apply(int i) { return RunTime.box_zvalue(_value[i]); } - public override void update(int i, object x) { _value[i] = ((Boolean)x).value; } - public override int length() { return _value.Length; } - public override string ToString() { return _value.ToString(); } - } - - [Meta("class extends scala.Array[scala.Byte];")] - sealed class BArray : Array - { - internal readonly sbyte[] _value; - public BArray(sbyte[] _value) { this._value = _value; } - public override object value() { return _value; } - public override object apply(int i) { return RunTime.box_bvalue(_value[i]); } - public override void update(int i, object x) { _value[i] = ((Byte)x).value; } - public override int length() { return _value.Length; } - public override string ToString() { return _value.ToString(); } - } - - [Meta("class extends scala.Array[scala.Short];")] - sealed class SArray : Array - { - internal readonly short[] _value; - public SArray(short[] _value) { this._value = _value; } - public override object value() { return _value; } - public override object apply(int i) { return RunTime.box_svalue(_value[i]); } - public override void update(int i, object x) { _value[i] = ((Short)x).value; } - public override int length() { return _value.Length; } - public override string ToString() { return _value.ToString(); } - } - - [Meta("class extends scala.Array[scala.Char];")] - sealed class CArray : Array - { - internal readonly char[] _value; - public CArray(char[] _value) { this._value = _value; } - public override object value() { return _value; } - public override object apply(int i) { return RunTime.box_cvalue(_value[i]); } - public override void update(int i, object x) { _value[i] = ((Char)x).value; } - public override int length() { return _value.Length; } - public override string ToString() { return ((object)_value).ToString(); } - } - - [Meta("class extends scala.Array[scala.Int];")] - sealed class IArray : Array - { - internal readonly int[] _value; - public IArray(int[] _value) { this._value = _value; } - public override object value() { return _value; } - public override object apply(int i) { return RunTime.box_ivalue(_value[i]); } - public override void update(int i, object x) { _value[i] = ((Int)x).value; } - public override int length() { return _value.Length; } - public override string ToString() { return _value.ToString(); } - } - - [Meta("class extends scala.Array[scala.Long];")] - sealed class LArray : Array - { - internal readonly long[] _value; - public LArray(long[] _value) { this._value = _value; } - public override object value() { return _value; } - public override object apply(int i) { return RunTime.box_lvalue(_value[i]); } - public override void update(int i, object x) { _value[i] = ((Long)x).value; } - public override int length() { return _value.Length; } - public override string ToString() { return _value.ToString(); } - } - - [Meta("class extends scala.Array[scala.Float];")] - sealed class FArray : Array - { - internal readonly float[] _value; - public FArray(float[] _value) { this._value = _value; } - public override object value() { return _value; } - public override object apply(int i) { return RunTime.box_fvalue(_value[i]); } - public override void update(int i, object x) { _value[i] = ((Float)x).value; } - public override int length() { return _value.Length; } - public override string ToString() { return _value.ToString(); } - } - - [Meta("class extends scala.Array[scala.Double];")] - sealed class DArray : Array - { - internal readonly double[] _value; - public DArray(double[] _value) { this._value = _value; } - public override object value() { return _value; } - public override object apply(int i) { return RunTime.box_dvalue(_value[i]); } - public override void update(int i, object x) { _value[i] = ((Double)x).value; } - public override int length() { return _value.Length; } - public override string ToString() { return _value.ToString(); } - } - - [Meta("class [?T < scala.AnyRef] extends scala.Array[?T];")] - sealed class OArray : Array - { - internal readonly object[] _value; - public OArray(object[] _value) { this._value = _value; } - public override object value() { return _value; } - public override object apply(int i) { return _value[i]; } - public override void update(int i, object x) { _value[i] = x; } - public override int length() { return _value.Length; } - public override string ToString() { return _value.ToString(); } - } -} \ No newline at end of file diff --git a/sources/scala/runtime/RunTime.java b/sources/scala/runtime/RunTime.java deleted file mode 100644 index 452ca595f..000000000 --- a/sources/scala/runtime/RunTime.java +++ /dev/null @@ -1,473 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2002-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $OldId: RunTime.java,v 1.13 2002/11/19 12:01:40 paltherr Exp $ -// $Id$ - -package scala.runtime; - -import scala.Unit; -import scala.Boolean; -import scala.Byte; -import scala.Short; -import scala.Char; -import scala.Int; -import scala.Long; -import scala.Float; -import scala.Double; -import scala.Array; - -public abstract class RunTime { - - //######################################################################## - // Private Constants - - private static final int BITS = 8; - private static final int ARRAY_SIZE = 2 << BITS; - private static final int INDEX_MASK = ARRAY_SIZE - 1; - private static final int CHECK_MASK = ~(ARRAY_SIZE / 2 - 1); - - private static final UValue uvalue = new UValue(); - private static final ZValue zvalue_f = new ZValue(false); - private static final ZValue zvalue_t = new ZValue(true); - private static final BValue bvalue[] = new BValue[256]; - private static final SValue svalue[] = new SValue[ARRAY_SIZE]; - private static final CValue cvalue[] = new CValue[ARRAY_SIZE / 2]; - private static final IValue ivalue[] = new IValue[ARRAY_SIZE]; - private static final LValue lvalue[] = new LValue[ARRAY_SIZE]; - - static { - for (int i = 0; i < bvalue.length; i++) - bvalue[i] = new BValue((byte)i); - for (int i = 0; i < ARRAY_SIZE / 2; i++) { - svalue[i] = new SValue((short)i); - cvalue[i] = new CValue((char )i); - ivalue[i] = new IValue((int )i); - lvalue[i] = new LValue((long )i); - svalue[i + ARRAY_SIZE / 2] = new SValue((short)(CHECK_MASK | i)); - ivalue[i + ARRAY_SIZE / 2] = new IValue((int )(CHECK_MASK | i)); - lvalue[i + ARRAY_SIZE / 2] = new LValue((long )(CHECK_MASK | i)); - } - } - - //######################################################################## - // Private Variables - - private static ClassLoader loader = ClassLoader.getSystemClassLoader(); - - //######################################################################## - // Public Functions - Getting & setting class loader - - public static ClassLoader getClassLoader() { - return loader; - } - - public static void setClassLoader(ClassLoader loader) { - RunTime.loader = loader; - } - - //######################################################################## - // Public Functions - Catching exceptions - - public static Throwable tryCatch(Runnable runnable) { - try { - runnable.run(); - return null; - } catch (Throwable exception) { - return exception; - } - } - - //######################################################################## - // Public Functions - Boxing primitives - - public static Unit box_uvalue( ) { - return uvalue; - } - - public static Boolean box_zvalue(boolean x) { - return x ? zvalue_t : zvalue_f; - } - - public static Byte box_bvalue(byte x) { - return bvalue[x & 0x000000FF]; - } - - public static Short box_svalue(short x) { - int c = x & CHECK_MASK; - if (c == 0 || c == CHECK_MASK) return svalue[x & INDEX_MASK]; - return new SValue(x); - } - - public static Char box_cvalue(char x) { - int c = (int)x & CHECK_MASK; - if (c == 0) return cvalue[(int)x & INDEX_MASK]; - return new CValue(x); - } - - public static Int box_ivalue(int x) { - int c = x & CHECK_MASK; - if (c == 0 || c == CHECK_MASK) return ivalue[x & INDEX_MASK]; - return new IValue(x); - } - - public static Long box_lvalue(long x) { - long c = x & CHECK_MASK; - if (c == 0 || c == CHECK_MASK) return lvalue[(int)x & INDEX_MASK]; - return new LValue(x); - } - - public static Float box_fvalue(float x) { - return new FValue(x); - } - - public static Double box_dvalue(double x) { - return new DValue(x); - } - - /** @meta method (scala.Array[scala.Boolean]) scala.Array[scala.Boolean];*/ - public static Array box_zarray(boolean[] xs) { - return new ZArray(xs); - } - - /** @meta method (scala.Array[scala.Byte]) scala.Array[scala.Byte]; */ - public static Array box_barray(byte [] xs) { - return new BArray(xs); - } - - /** @meta method (scala.Array[scala.Short]) scala.Array[scala.Short]; */ - public static Array box_sarray(short [] xs) { - return new SArray(xs); - } - - /** @meta method (scala.Array[scala.Char]) scala.Array[scala.Char]; */ - public static Array box_carray(char [] xs) { - return new CArray(xs); - } - - /** @meta method (scala.Array[scala.Int]) scala.Array[scala.Int]; */ - public static Array box_iarray(int [] xs) { - return new IArray(xs); - } - - /** @meta method (scala.Array[scala.Long]) scala.Array[scala.Long]; */ - public static Array box_larray(long [] xs) { - return new LArray(xs); - } - - /** @meta method (scala.Array[scala.Float]) scala.Array[scala.Float]; */ - public static Array box_farray(float [] xs) { - return new FArray(xs); - } - - /** @meta method (scala.Array[scala.Double]) scala.Array[scala.Double]; */ - public static Array box_darray(double [] xs) { - return new DArray(xs); - } - - /** @meta method [?T < scala.AnyRef](scala.Array[?T]) scala.Array[?T]; */ - public static Array box_oarray(Object [] xs) { - return new OArray(xs); - } - - /** @meta method [?T](scala.Array[?T]) scala.Array[?T]; */ - public static Array box__array(Object xs) { - if (xs == null ) return box_oarray((Object [])xs); - if (xs instanceof boolean[]) return box_zarray((boolean[])xs); - if (xs instanceof byte []) return box_barray((byte [])xs); - if (xs instanceof short []) return box_sarray((short [])xs); - if (xs instanceof char []) return box_carray((char [])xs); - if (xs instanceof int []) return box_iarray((int [])xs); - if (xs instanceof long []) return box_larray((long [])xs); - if (xs instanceof float []) return box_farray((float [])xs); - if (xs instanceof double []) return box_darray((double [])xs); - if (xs instanceof Object []) return box_oarray((Object [])xs); - throw new ClassCastException(xs.getClass() + " is not an array class"); - } - - //######################################################################## - // Public Functions - Unboxing primitives - - public static void unbox_uvalue(Unit x) { x.value(); } - public static boolean unbox_zvalue(Boolean x) { return x.value ; } - public static byte unbox_bvalue(Byte x) { return x.value ; } - public static short unbox_svalue(Short x) { return x.value ; } - public static char unbox_cvalue(Char x) { return x.value ; } - public static int unbox_ivalue(Int x) { return x.value ; } - public static long unbox_lvalue(Long x) { return x.value ; } - public static float unbox_fvalue(Float x) { return x.value ; } - public static double unbox_dvalue(Double x) { return x.value ; } - - /** @meta method (scala.Array[scala.Boolean]) scala.Array[scala.Boolean];*/ - public static boolean[] unbox_zarray(Array xs) { - return xs == null ? null : ((ZArray)xs).value; - } - /** @meta method (scala.Array[scala.Byte]) scala.Array[scala.Byte]; */ - public static byte [] unbox_barray(Array xs) { - return xs == null ? null : ((BArray)xs).value; - } - /** @meta method (scala.Array[scala.Short]) scala.Array[scala.Short]; */ - public static short [] unbox_sarray(Array xs) { - return xs == null ? null : ((SArray)xs).value; - } - /** @meta method (scala.Array[scala.Char]) scala.Array[scala.Char]; */ - public static char [] unbox_carray(Array xs) { - return xs == null ? null : ((CArray)xs).value; - } - /** @meta method (scala.Array[scala.Int]) scala.Array[scala.Int]; */ - public static int [] unbox_iarray(Array xs) { - return xs == null ? null : ((IArray)xs).value; - } - /** @meta method (scala.Array[scala.Long]) scala.Array[scala.Long]; */ - public static long [] unbox_larray(Array xs) { - return xs == null ? null : ((LArray)xs).value; - } - /** @meta method (scala.Array[scala.Float]) scala.Array[scala.Float]; */ - public static float [] unbox_farray(Array xs) { - return xs == null ? null : ((FArray)xs).value; - } - /** @meta method (scala.Array[scala.Double]) scala.Array[scala.Double]; */ - public static double [] unbox_darray(Array xs) { - return xs == null ? null : ((DArray)xs).value; - } - /** @meta method [?T < scala.AnyRef](scala.Array[?T]) scala.Array[scala.AnyRef]; */ - public static Object [] unbox_oarray(Array xs) { - return xs == null ? null : ((OArray)xs).value; - } - /** @meta method [?T](scala.Array[?T]) scala.AnyRef; */ - public static Object unbox__array(Array xs) { - return xs == null ? null : xs.value(); - } - - //######################################################################## - // Public Functions - Conversion primitives - - public static byte b2b(byte x) { return (byte )x; } - public static short b2s(byte x) { return (short )x; } - public static char b2c(byte x) { return (char )x; } - public static int b2i(byte x) { return (int )x; } - public static long b2l(byte x) { return (long )x; } - public static float b2f(byte x) { return (float )x; } - public static double b2d(byte x) { return (double)x; } - public static byte s2b(short x) { return (byte )x; } - public static short s2s(short x) { return (short )x; } - public static char s2c(short x) { return (char )x; } - public static int s2i(short x) { return (int )x; } - public static long s2l(short x) { return (long )x; } - public static float s2f(short x) { return (float )x; } - public static double s2d(short x) { return (double)x; } - public static byte c2b(char x) { return (byte )x; } - public static short c2s(char x) { return (short )x; } - public static char c2c(char x) { return (char )x; } - public static int c2i(char x) { return (int )x; } - public static long c2l(char x) { return (long )x; } - public static float c2f(char x) { return (float )x; } - public static double c2d(char x) { return (double)x; } - public static byte i2b(int x) { return (byte )x; } - public static short i2s(int x) { return (short )x; } - public static char i2c(int x) { return (char )x; } - public static int i2i(int x) { return (int )x; } - public static long i2l(int x) { return (long )x; } - public static float i2f(int x) { return (float )x; } - public static double i2d(int x) { return (double)x; } - public static byte l2b(long x) { return (byte )x; } - public static short l2s(long x) { return (short )x; } - public static char l2c(long x) { return (char )x; } - public static int l2i(long x) { return (int )x; } - public static long l2l(long x) { return (long )x; } - public static float l2f(long x) { return (float )x; } - public static double l2d(long x) { return (double)x; } - public static byte f2b(float x) { return (byte )x; } - public static short f2s(float x) { return (short )x; } - public static char f2c(float x) { return (char )x; } - public static int f2i(float x) { return (int )x; } - public static long f2l(float x) { return (long )x; } - public static float f2f(float x) { return (float )x; } - public static double f2d(float x) { return (double)x; } - public static byte d2b(double x) { return (byte )x; } - public static short d2s(double x) { return (short )x; } - public static char d2c(double x) { return (char )x; } - public static int d2i(double x) { return (int )x; } - public static long d2l(double x) { return (long )x; } - public static float d2f(double x) { return (float )x; } - public static double d2d(double x) { return (double)x; } - - //######################################################################## - // Public Functions - Array primitives - - public static boolean[] zarray(int length) { return new boolean[length]; } - public static byte [] barray(int length) { return new byte [length]; } - public static short [] sarray(int length) { return new short [length]; } - public static char [] carray(int length) { return new char [length]; } - public static int [] iarray(int length) { return new int [length]; } - public static long [] larray(int length) { return new long [length]; } - public static float [] farray(int length) { return new float [length]; } - public static double [] darray(int length) { return new double [length]; } - public static Object oarray(int length, String classname) { - try { - Class clasz = Class.forName(classname, false, loader); - return java.lang.reflect.Array.newInstance(clasz, length); - } catch (ClassNotFoundException exception) { - throw new Error(exception.toString()); - } - } - - public static int zarray_length(boolean[] xs) { return xs.length; } - public static int barray_length(byte [] xs) { return xs.length; } - public static int sarray_length(short [] xs) { return xs.length; } - public static int carray_length(char [] xs) { return xs.length; } - public static int iarray_length(int [] xs) { return xs.length; } - public static int larray_length(long [] xs) { return xs.length; } - public static int farray_length(float [] xs) { return xs.length; } - public static int darray_length(double [] xs) { return xs.length; } - public static int oarray_length(Object [] xs) { return xs.length; } - - public static boolean zarray_get(boolean[] xs, int i) { return xs[i]; } - public static byte barray_get(byte [] xs, int i) { return xs[i]; } - public static short sarray_get(short [] xs, int i) { return xs[i]; } - public static char carray_get(char [] xs, int i) { return xs[i]; } - public static int iarray_get(int [] xs, int i) { return xs[i]; } - public static long larray_get(long [] xs, int i) { return xs[i]; } - public static float farray_get(float [] xs, int i) { return xs[i]; } - public static double darray_get(double [] xs, int i) { return xs[i]; } - public static Object oarray_get(Object [] xs, int i) { return xs[i]; } - - public static void zarray_set(boolean[] xs, int i, boolean x) { xs[i] = x;} - public static void barray_set(byte [] xs, int i, byte x) { xs[i] = x;} - public static void sarray_set(short [] xs, int i, short x) { xs[i] = x;} - public static void carray_set(char [] xs, int i, char x) { xs[i] = x;} - public static void iarray_set(int [] xs, int i, int x) { xs[i] = x;} - public static void larray_set(long [] xs, int i, long x) { xs[i] = x;} - public static void farray_set(float [] xs, int i, float x) { xs[i] = x;} - public static void darray_set(double [] xs, int i, double x) { xs[i] = x;} - public static void oarray_set(Object [] xs, int i, Object x) { xs[i] = x;} - - //######################################################################## -} - -// These classes may not be defined in class RunTime because inner -// classes confuse pico which then attributes the metadata to the -// wrong members. - -final class UValue extends Unit implements java.io.Serializable - { public UValue( ) { super( ); } } -final class ZValue extends Boolean implements java.io.Serializable - { public ZValue(boolean x) { super(x); } } -final class BValue extends Byte implements java.io.Serializable - { public BValue(byte x) { super(x); } } -final class SValue extends Short implements java.io.Serializable - { public SValue(short x) { super(x); } } -final class CValue extends Char implements java.io.Serializable - { public CValue(char x) { super(x); } } -final class IValue extends Int implements java.io.Serializable - { public IValue(int x) { super(x); } } -final class LValue extends Long implements java.io.Serializable - { public LValue(long x) { super(x); } } -final class FValue extends Float implements java.io.Serializable - { public FValue(float x) { super(x); } } -final class DValue extends Double implements java.io.Serializable - { public DValue(double x) { super(x); } } - -/** @meta class extends scala.Array[scala.Boolean]; */ -final class ZArray extends Array implements java.io.Serializable { - public final boolean[] value; - public ZArray(boolean[] value) { this.value = value; } - public Object value() { return value; } - public Object apply(int i) { return RunTime.box_zvalue(value[i]); } - public void update(int i, Object x) { value[i] = ((Boolean)x).value; } - public int length() { return value.length; } - public String toString() { return String.valueOf(value); } -} - -/** @meta class extends scala.Array[scala.Byte]; */ -final class BArray extends Array implements java.io.Serializable { - public final byte[] value; - public BArray(byte[] value) { this.value = value; } - public Object value() { return value; } - public Object apply(int i) { return RunTime.box_bvalue(value[i]); } - public void update(int i, Object x) { value[i] = ((Byte)x).value; } - public int length() { return value.length; } - public String toString() { return String.valueOf(value); } -} - -/** @meta class extends scala.Array[scala.Short]; */ -final class SArray extends Array implements java.io.Serializable { - public final short[] value; - public SArray(short[] value) { this.value = value; } - public Object value() { return value; } - public Object apply(int i) { return RunTime.box_svalue(value[i]); } - public void update(int i, Object x) { value[i] = ((Short)x).value; } - public int length() { return value.length; } - public String toString() { return String.valueOf(value); } -} - -/** @meta class extends scala.Array[scala.Char]; */ -final class CArray extends Array implements java.io.Serializable { - public final char[] value; - public CArray(char[] value) { this.value = value; } - public Object value() { return value; } - public Object apply(int i) { return RunTime.box_cvalue(value[i]); } - public void update(int i, Object x) { value[i] = ((Char)x).value; } - public int length() { return value.length; } - public String toString() { return String.valueOf((Object)value); } -} - -/** @meta class extends scala.Array[scala.Int]; */ -final class IArray extends Array implements java.io.Serializable { - public final int[] value; - public IArray(int[] value) { this.value = value; } - public Object value() { return value; } - public Object apply(int i) { return RunTime.box_ivalue(value[i]); } - public void update(int i, Object x) { value[i] = ((Int)x).value; } - public int length() { return value.length; } - public String toString() { return String.valueOf(value); } -} - -/** @meta class extends scala.Array[scala.Long]; */ -final class LArray extends Array implements java.io.Serializable { - public final long[] value; - public LArray(long[] value) { this.value = value; } - public Object value() { return value; } - public Object apply(int i) { return RunTime.box_lvalue(value[i]); } - public void update(int i, Object x) { value[i] = ((Long)x).value; } - public int length() { return value.length; } - public String toString() { return String.valueOf(value); } -} - -/** @meta class extends scala.Array[scala.Float]; */ -final class FArray extends Array implements java.io.Serializable { - public final float[] value; - public FArray(float[] value) { this.value = value; } - public Object value() { return value; } - public Object apply(int i) { return RunTime.box_fvalue(value[i]); } - public void update(int i, Object x) { value[i] = ((Float)x).value; } - public int length() { return value.length; } - public String toString() { return String.valueOf(value); } -} - -/** @meta class extends scala.Array[scala.Double]; */ -final class DArray extends Array implements java.io.Serializable { - public final double[] value; - public DArray(double[] value) { this.value = value; } - public Object value() { return value; } - public Object apply(int i) { return RunTime.box_dvalue(value[i]); } - public void update(int i, Object x) { value[i] = ((Double)x).value; } - public int length() { return value.length; } - public String toString() { return String.valueOf(value); } -} - -/** @meta class [?T < scala.AnyRef] extends scala.Array[?T]; */ -final class OArray extends Array implements java.io.Serializable { - public final Object[] value; - public OArray(Object[] value) { this.value = value; } - public Object value() { return value; } - public Object apply(int i) { return value[i]; } - public void update(int i, Object x) { value[i] = x; } - public int length() { return value.length; } - public String toString() { return String.valueOf(value); } -} diff --git a/sources/scala/runtime/types/ClassType.java b/sources/scala/runtime/types/ClassType.java deleted file mode 100644 index b0fb83b79..000000000 --- a/sources/scala/runtime/types/ClassType.java +++ /dev/null @@ -1,94 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.Type; -import scala.Array; -import scala.runtime.RunTime; - -public abstract class ClassType extends Type { - public final Class clazz; - public final boolean isTrivial; - - public ClassType(Class clazz, boolean isTrivial) { - this.clazz = clazz; - this.isTrivial = isTrivial; - } - - public Array newArray(int size) { - Object[] array = - (Object[])java.lang.reflect.Array.newInstance(clazz, size); - return RunTime.box_oarray(array); - } - - public Object defaultValue() { - return null; - } - - public boolean isInstance(Object o) { - assert Statistics.incInstanceOf(); - return clazz.isInstance(o); - } - - public boolean isNonTrivialInstance(Object o) { - assert isTrivial; // must be overridden for non-trivial types - return true; - } - - public boolean isSubType(Type that) { - return (that == Type.Any) - || (that instanceof ClassType - && isSubClassType((ClassType)that)) - || (that instanceof CompoundType - && isSubCompoundType((CompoundType)that)); - } - - protected boolean isSubClassType(ClassType that) { - return that.clazz.isAssignableFrom(this.clazz); - } - - public boolean isNonTrivialSubClassType(ClassType that) { - assert isTrivial; // must be overridden for non-trivial types - return true; - } - - protected final boolean isSubCompoundType(CompoundType that) { - // TODO? check refinement - for (int i = 0; i < that.components.length; ++i) { - if (!isSubType(that.components[i])) - return false; - } - - return true; - } - - public boolean isSameType(Type that) { - return (that instanceof ClassType) - && (((ClassType)that).clazz == this.clazz); - } - - public boolean isSameAsJavaType(Class that) { - if (this.isTrivial) - return clazz == that; - else if (clazz != that) - return false; - else - throw new Error("uncomparable types"); - } - - public int hashCode() { - return clazz.hashCode(); - } - - public String toString() { - return clazz.getName(); - } -} diff --git a/sources/scala/runtime/types/CompoundType.java b/sources/scala/runtime/types/CompoundType.java deleted file mode 100644 index 4dcb830b0..000000000 --- a/sources/scala/runtime/types/CompoundType.java +++ /dev/null @@ -1,109 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.Type; -import scala.Array; -import scala.ScalaObject; -import scala.runtime.RunTime; - -/** - * Run-time representation for compound types. - * - * @author Michel Schinz - * @version 1.0 - */ - -public class CompoundType extends Type { - public final ClassType[] components; - public final boolean emptyRefinement; - - public CompoundType(ClassType[] components, boolean emptyRefinement) { - this.components = components; - this.emptyRefinement = emptyRefinement; - } - - public Array newArray(int size) { - if (Type.unsafeArraysAllowed.get() == java.lang.Boolean.TRUE) - return (Array) - java.lang.reflect.Array.newInstance(components[0].clazz, size); - else - throw new Error("cannot create arrays of compound types"); - } - - public Object defaultValue() { - return null; - } - - public boolean isInstance(Object o) { - assert Statistics.incInstanceOf(); - for (int i = 0; i < components.length; ++i) { - if (!components[i].isInstance(o)) - return false; - } - - return true; - } - - public boolean isSubType(Type that) { - if (!emptyRefinement) - throw new Error("cannot compute isSubType (non-empty refinement)"); - - if (that instanceof CompoundType) { - CompoundType thatCT = (CompoundType)that; - ClassType[] thatComponents = thatCT.components; - for (int i = 0; i < thatComponents.length; ++i) { - if (!this.isSubType(thatComponents[i])) - return false; - } - return true; - } else { - for (int i = 0; i < components.length; ++i) { - if (components[i].isSubType(that)) - return true; - } - return false; - } - } - - public boolean isSameType(Type that) { - if (!emptyRefinement) - throw new Error("cannot compute isSameType (non-empty refinement)"); - - if (that instanceof CompoundType) { - CompoundType thatCT = (CompoundType)that; - - if (components.length != thatCT.components.length) - return false; - - for (int i = 0; i < components.length; ++i) { - if (!components[i].isSameType(thatCT.components[i])) - return false; - } - - return true; - } else - return false; - } - - public int hashCode() { - return Type.hashCode(components); - } - - public String toString() { - StringBuffer buf = new StringBuffer(); - for (int i = 0; i < components.length; ++i) { - if (i > 0) buf.append(" with "); - buf.append(components[i]); - } - return buf.toString(); - } -} diff --git a/sources/scala/runtime/types/JavaClassType.java b/sources/scala/runtime/types/JavaClassType.java deleted file mode 100644 index 5a73641e5..000000000 --- a/sources/scala/runtime/types/JavaClassType.java +++ /dev/null @@ -1,53 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import java.util.HashMap; - -public class JavaClassType extends ClassType { - private static final ClassLoader loader = - ClassLoader.getSystemClassLoader(); - - private static ThreadLocal cacheLocal = new ThreadLocal() { - protected Object initialValue() { - return new HashMap(); - } - }; - - public static JavaClassType javaClassType(String fullName) { - HashMap/**/ cache = (HashMap)cacheLocal.get(); - JavaClassType jct = (JavaClassType)cache.get(fullName); - if (jct == null) { - try { - jct = new JavaClassType(fullName); - cache.put(fullName, jct); - } catch (ClassNotFoundException e) { - throw new Error(e); - } - } - return jct; - } - - public static JavaClassType javaArrayType(String elemFullName, int dimen) { - StringBuffer fullName = new StringBuffer(); - for (int i = 0; i < dimen; ++i) - fullName.append('['); - if (elemFullName.length() == 1 && "ZBCDFIJS".indexOf(elemFullName) >= 0) - fullName.append(elemFullName); - else - fullName.append('L').append(elemFullName).append(';'); - return javaClassType(fullName.toString()); - } - - public JavaClassType(String fullName) throws ClassNotFoundException { - super(Class.forName(fullName, false, loader), true); - } -} diff --git a/sources/scala/runtime/types/JavaRefArrayType.java b/sources/scala/runtime/types/JavaRefArrayType.java deleted file mode 100644 index 2b25592f7..000000000 --- a/sources/scala/runtime/types/JavaRefArrayType.java +++ /dev/null @@ -1,80 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.Type; -import scala.Array; - -/** - * Type for Java arrays of references. - * - * @author Michel Schinz - * @version 1.0 - */ - -public class JavaRefArrayType extends Type { - public final int dimensions; - public final Type elemType; - - public static JavaRefArrayType javaRefArrayType(Type elemType, - int dimensions) { - if (elemType instanceof JavaRefArrayType) { - JavaRefArrayType other = (JavaRefArrayType)elemType; - return new JavaRefArrayType(other.elemType, - dimensions + other.dimensions); - } else - return new JavaRefArrayType(elemType, dimensions); - } - - private JavaRefArrayType(Type elemType, int dimensions) { - this.elemType = elemType; - this.dimensions = dimensions; - } - - public Array newArray(int size) { - throw new Error(); // TODO - } - - public Object defaultValue() { - return null; - } - - public boolean isInstance(Object o) { - assert Statistics.incInstanceOf(); - return this.isSameAsJavaType(o.getClass()); - } - - public boolean isSameType(Type that) { - return (that instanceof JavaRefArrayType) - && (elemType.isSameType(((JavaRefArrayType)that).elemType)); - } - - public boolean isSameAsJavaType(Class that) { - Class thatElemType = that; - for (int i = 0; i < dimensions && thatElemType != null; ++i) - thatElemType = thatElemType.getComponentType(); - - return (thatElemType != null) - && (elemType.isSameAsJavaType(thatElemType)); - } - - public boolean isSubType(Type that) { - return isSameType(that); - } - - public String toString() { - return elemType.toString() + "[]"; - } - - public int hashCode() { - return elemType.hashCode() * 11; - } -} diff --git a/sources/scala/runtime/types/ScalaClassType.java b/sources/scala/runtime/types/ScalaClassType.java deleted file mode 100644 index 47b7b7f4d..000000000 --- a/sources/scala/runtime/types/ScalaClassType.java +++ /dev/null @@ -1,271 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.Type; -import scala.Array; -import scala.ScalaObject; -import scala.runtime.RunTime; -import scala.runtime.FNV_Hash; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -/** - * Provides a run-time representation of the Scala types. - * - * @author Michel Schinz - * @version 1.0 - */ - -public class ScalaClassType extends ClassType { - public static final ScalaClassType[] EMPTY_ARRAY = - new ScalaClassType[0]; - - private static final ScalaClassType[][] EMPTY_ANCESTORS = - new ScalaClassType[0][]; - - private final TypeConstructor constr; - private final Type[] inst; - - private final Object parents; - private ScalaClassType[][] ancestors = null; - - private final int hashCode; - - public ScalaClassType(TypeConstructor constr, Type[] inst, Object parents) { - super(constr.clazz, constr.isTrivial); - - this.constr = constr; - this.inst = inst; - - int hash = FNV_Hash.hashStep32(FNV_Hash.INIT, constr.hashCode()); - for (int i = 0; i < inst.length; ++i) { - hash = FNV_Hash.hashStep32(hash, inst[i].hashCode()); - } - this.hashCode = hash; - this.parents = parents; - } - - public boolean isInstance(Object o) { - return super.isInstance(o) - && (isTrivial - || ((ScalaObject)o).getScalaType().isNonTrivialSubClassType(this)); - } - - public boolean isNonTrivialInstance(Object o) { - assert Statistics.incWeakInstanceOf(); - return ((ScalaObject)o).getScalaType().isNonTrivialSubClassType(this); - } - - protected boolean isSubClassType(ClassType that) { - return (this == that) - || (super.isSubClassType(that) - && (that.isTrivial - || isNonTrivialSubClassType((ScalaClassType)that))); - } - - public boolean isNonTrivialSubClassType(ClassType that) { - ScalaClassType thatCT = (ScalaClassType)that; - ScalaClassType parentCT = myInstantiationFor(thatCT); - - // At this stage, if parentCT is null, it means that the - // constructors had different prefixes, hence we return false. - return (parentCT != null) - && (parentCT == thatCT || parentCT.hasSubInstantiation(thatCT)); - } - - // Return true iff the instantiation of THIS is "smaller" than the - // one of THAT. - private boolean hasSubInstantiation(ScalaClassType that) { - assert this.constr == that.constr; - - final Type[] thisInst = this.inst; - final Type[] thatInst = that.inst; - - int i = 0; - - // invariant parameters - final int firstM = this.constr.zCount; - while (i < firstM) { - Type thisTp = thisInst[i], thatTp = thatInst[i]; - if (!(thisTp == thatTp || thisTp.isSameType(thatTp))) - return false; - ++i; - } - // contravariant parameters - final int firstP = firstM + this.constr.mCount; - while (i < firstP) { - Type thisTp = thisInst[i], thatTp = thatInst[i]; - if (!(thisTp == thatTp || thatTp.isSubType(thisTp))) - return false; - ++i; - } - // covariant parameters - final int firstOutside = firstP + this.constr.pCount; - while (i < firstOutside) { - Type thisTp = thisInst[i], thatTp = thatInst[i]; - if (!(thisTp == thatTp || thisTp.isSubType(thatTp))) - return false; - ++i; - } - return true; - } - - public boolean isSameType(Type that) { - return this == that; - } - - private ScalaClassType myInstantiationFor(ScalaClassType that) { - // Find our instantiation for the other type, if any. - ScalaClassType[] thisSlice = getAncestors()[that.constr.level]; - - for (int i = 0; i < thisSlice.length; ++i) { - if (thisSlice[i].constr == that.constr) { - assert Statistics.addAncestorSearchIterations(i + 1); - return thisSlice[i]; - } - } - assert Statistics.addAncestorSearchIterations(thisSlice.length); - - return null; - } - - public String toString() { - StringBuffer buf = new StringBuffer(); - - int firstM = constr.zCount; - int firstP = firstM + constr.mCount; - buf.append(constr); - if (inst.length > 0) { - buf.append("["); - for (int i = 0; i < inst.length; ++i) { - if (i > 0) buf.append(", "); - if (i >= firstP) - buf.append('+'); - else if (i >= firstM) - buf.append('-'); - buf.append(inst[i]); - } - buf.append("]"); - } - return buf.toString(); - } - - public int hashCode() { - return hashCode; - } - - public ScalaClassType[] getParents() { - if (parents instanceof LazyParents) - return ((LazyParents)parents).force(); - else - return (ScalaClassType[])parents; - } - - private ScalaClassType[][] getAncestors() { - if (ancestors == null) - computeAncestors(); - return ancestors; - } - - private void computeAncestors() { - final int level = constr.level; - final int ancestorDepth = constr.ancestorCacheDepth; - final int[] ancestorCode = constr.ancestorCode; - ScalaClassType[] parents = getParents(); - - ScalaClassType[][] ancestors = new ScalaClassType[ancestorDepth][]; - ScalaClassType[][] initialAncestors = parents.length > 0 - ? parents[0].getAncestors() - : EMPTY_ANCESTORS; - - for (int l = 0, dci = 0; l < ancestorDepth; ++l) { - int toAddParents = 0; - if (dci < ancestorCode.length && ancestorCode[dci] == l) { - dci++; - toAddParents = ancestorCode[dci++]; - } - int toAddSelf = (l == level) && (!constr.isTrivial) ? 1 : 0; - int toAdd = toAddParents + toAddSelf; - ScalaClassType[] initialRow; - - if (l < initialAncestors.length) - initialRow = initialAncestors[l]; - else - initialRow = ScalaClassType.EMPTY_ARRAY; - - if (toAdd == 0) { - ancestors[l] = initialRow; - } else { - int initialLen = initialRow.length; - ScalaClassType[] newRow = - new ScalaClassType[initialLen + toAdd]; - - if (toAddSelf == 1) - newRow[0] = this; - - System.arraycopy(initialRow, 0, newRow, toAddSelf, initialLen); - for (int i = 0; i < toAddParents; ++i) { - int p = ancestorCode[dci++]; - int o = ancestorCode[dci++]; - newRow[toAddSelf + initialLen + i] = - parents[p].getAncestors()[l][o]; - } - ancestors[l] = newRow; - } - } - this.ancestors = ancestors; - } - - private static final ClassLoader loader = - ClassLoader.getSystemClassLoader(); - - // Must match value defined in class scalac.util.Names ! - private static final String INSTANTIATE_PREFIX = "instantiate$"; - - // Enforces uniqueness of the instance when serializing and - // deserializing the same Scala type object many times. - private Object readResolve() { - if (constr.clazz == null) - return this; // TODO: check why clazz may be null - String fullName = constr.clazz.getName(); - Class instClazz = constr.clazz; - if (constr.clazz.isInterface()) { - try { - instClazz = Class.forName(fullName + "$class", false, loader); - } - catch (ClassNotFoundException e) { - throw new Error(e); - } - } - try { - int inx = fullName.lastIndexOf('.'); - String className = (inx < 0) ? fullName : fullName.substring(inx + 1); - String name = INSTANTIATE_PREFIX + className + "$"; - Class[] paramTypes = new Class[]{ Type[].class }; - Method instMeth = instClazz.getDeclaredMethod(name, paramTypes); - assert Modifier.isStatic(instMeth.getModifiers()); - return instMeth.invoke(null, new Object[]{ inst }); - } - catch (NoSuchMethodException e) { - throw new Error(e); - } - catch (IllegalAccessException e) { - throw new Error(e); - } - catch (InvocationTargetException e) { - throw new Error(e); - } - } - -} diff --git a/sources/scala/runtime/types/SingleType.java b/sources/scala/runtime/types/SingleType.java deleted file mode 100644 index 44093475d..000000000 --- a/sources/scala/runtime/types/SingleType.java +++ /dev/null @@ -1,52 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.Type; -import scala.Array; - -public class SingleType extends Type { - private final Object instance; - - public SingleType(Object instance) { - this.instance = instance; - } - - public Array newArray(int size) { - if (Type.unsafeArraysAllowed.get() == java.lang.Boolean.TRUE) - return (Array) - java.lang.reflect.Array.newInstance(instance.getClass(), size); - else - throw new Error("cannot create array of single types"); - } - - public Object defaultValue() { - return null; - } - - public boolean isInstance(Object o) { - assert Statistics.incInstanceOf(); - return o == instance; - } - - public boolean isSubType(Type that) { - return that.isInstance(instance); - } - - public boolean isSameType(Type that) { - return (that instanceof SingleType) - && (this.instance == ((SingleType)that).instance); - } - - public int hashCode() { - return System.identityHashCode(instance); - } -} diff --git a/sources/scala/runtime/types/SpecialType.java b/sources/scala/runtime/types/SpecialType.java deleted file mode 100644 index 6c2527570..000000000 --- a/sources/scala/runtime/types/SpecialType.java +++ /dev/null @@ -1,42 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.Type; -import scala.Array; -import scala.runtime.RunTime; - -/** - * Abstract superclass for all "special" types, which are types - * existing in Scala but not in Java: Any, AnyVal, All and AllRef. - * - * @author Michel Schinz - * @version 1.0 - */ - -abstract public class SpecialType extends Type { - public Array newArray(int size) { - if (Type.unsafeArraysAllowed.get() == java.lang.Boolean.TRUE) - return (Array) - java.lang.reflect.Array.newInstance(Object.class, size); - else - throw new Error("cannot create arrays of special type " - + "(" + getClass().getName() + ")"); - } - - public Object defaultValue() { - return null; - } - - public boolean isSameType(Type that) { - return this == that; - } -} diff --git a/sources/scala/runtime/types/Statistics.java b/sources/scala/runtime/types/Statistics.java deleted file mode 100644 index db3317370..000000000 --- a/sources/scala/runtime/types/Statistics.java +++ /dev/null @@ -1,155 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import java.io.PrintStream; -import java.io.FileOutputStream; -import java.util.Map; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.ArrayList; - -import scala.Type; - -/** - * Collect various statistics about run time types, and output them to - * a file as s-expressions. - * - * Notice that all methods return true, in order to be usable as - * assertions and disabled easily. - * - * @author Michel Schinz - * @version 1.0 - */ - -public class Statistics { - private static long instantiationsCount = 0; - private static long uniqueInstantiationsCount = 0; - - private static long instanceOfCount = 0; - private static long weakInstanceOfCount = 0; - private static long typeCastCount = 0; - - private static long ancestorSearchIterations = 0; - private static long ancestorSearches = 0; - - private static HashMap instances = new HashMap(); - - static { - assert addWriteFileHook(); - } - - public static boolean addWriteFileHook() { - Thread writeFileHook = new Thread() { - public void run() { - try { - writeToFile(); - } catch (Throwable t) { - throw new Error(t); - } - } - }; - - Runtime.getRuntime().addShutdownHook(writeFileHook); - return true; - } - - public static synchronized boolean incInstantiations(boolean unique) { - ++instantiationsCount; - if (unique) ++uniqueInstantiationsCount; - return true; - } - - public static synchronized boolean incInstanceOf() { - ++instanceOfCount; - return true; - } - - public static synchronized boolean incWeakInstanceOf() { - ++weakInstanceOfCount; - return true; - } - - public static synchronized boolean decInstanceOf() { - --instanceOfCount; - return true; - } - - public static synchronized boolean incTypeCast() { - ++typeCastCount; - return true; - } - - public static synchronized boolean incInstances(String className, - Type tp) { - ArrayList currInst = (ArrayList)instances.get(className); - if (currInst == null) { - currInst = new ArrayList(); - instances.put(className, currInst); - } - currInst.add(tp); - return true; - } - - public static synchronized boolean addAncestorSearchIterations(int n) { - ancestorSearchIterations += n; - ancestorSearches++; - return true; - } - - /** - * Output statistics to a file, as an a-list associating numbers - * to tags. - */ - public static boolean writeToFile() throws java.io.FileNotFoundException { - String fileName = System.getProperty("scala.runtime.types.statfile"); - assert fileName != null - : "property scala.runtime.types.statfile not set"; - - System.out.println("Writing RTT statistics to file " + fileName); - - PrintStream stream = new PrintStream(new FileOutputStream(fileName)); - stream.println("("); - stream.println("(instantiations . " - + instantiationsCount + ")"); - stream.println("(unique-instantiations . " - + uniqueInstantiationsCount + ")"); - stream.println("(instance-of . " - + instanceOfCount + ")"); - stream.println("(weak-instance-of . " - + weakInstanceOfCount + ")"); - stream.println("(type-cast . " - + typeCastCount + ")"); - if (ancestorSearches > 0) { - stream.println("(ancestor-searches . " - + ancestorSearches + ")"); - stream.println("(ancestor-search-iterations . " - + ancestorSearchIterations + ")"); - } - stream.println("(instances . ("); - Iterator instIt = instances.entrySet().iterator(); - while (instIt.hasNext()) { - Map.Entry entry = (Map.Entry)instIt.next(); - String name = (String)entry.getKey(); - ArrayList instances = (ArrayList)entry.getValue(); - HashSet uniqueInstances = new HashSet(instances); - stream.println("(\"" + name + "\" . " - + instances.size() + ")"); - stream.println("(\"Unique" + name + "\" . " - + uniqueInstances.size() + ")"); - } - stream.print("))"); - stream.println(")"); - stream.close(); - return true; - } -} diff --git a/sources/scala/runtime/types/TypeAll.java b/sources/scala/runtime/types/TypeAll.java deleted file mode 100644 index 9c79646c6..000000000 --- a/sources/scala/runtime/types/TypeAll.java +++ /dev/null @@ -1,34 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.runtime.RunTime; -import scala.Type; -import scala.Array; - -public class TypeAll extends SpecialType { - public boolean isInstance(Object o) { - assert Statistics.incInstanceOf(); - return false; - } - - public boolean isSubType(Type that) { - return true; - } - - public String toString() { return "scala.All"; } - public int hashCode() { return 0xAAAAAAAA; } - - // Make TypeAll a serializable singleton - public static TypeAll INSTANCE = new TypeAll(); - protected TypeAll() { /* exists only to that instantiation */ } - private Object readResolve() { return INSTANCE; } -} diff --git a/sources/scala/runtime/types/TypeAllRef.java b/sources/scala/runtime/types/TypeAllRef.java deleted file mode 100644 index e037a340f..000000000 --- a/sources/scala/runtime/types/TypeAllRef.java +++ /dev/null @@ -1,35 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.runtime.RunTime; -import scala.Type; -import scala.Array; - -public class TypeAllRef extends SpecialType { - public boolean isInstance(Object o) { - assert Statistics.incInstanceOf(); - return false; - } - - public boolean isSubType(Type that) { - return !that.isSubType(Type.AnyVal); - } - - public String toString() { return "scala.AllRef"; } - - public int hashCode() { return 0xDDDDDDDD; } - - // Make TypeAllRef a serializable singleton - public static TypeAllRef INSTANCE = new TypeAllRef(); - protected TypeAllRef() { /* exists only to that instantiation */ } - private Object readResolve() { return INSTANCE; } -} diff --git a/sources/scala/runtime/types/TypeAny.java b/sources/scala/runtime/types/TypeAny.java deleted file mode 100644 index 6a2a5483a..000000000 --- a/sources/scala/runtime/types/TypeAny.java +++ /dev/null @@ -1,35 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.runtime.RunTime; -import scala.Type; -import scala.Array; - -public class TypeAny extends SpecialType { - public boolean isInstance(Object o) { - assert Statistics.incInstanceOf(); - return true; - } - - public boolean isSubType(Type that) { - return that == this; - } - - public String toString() { return "scala.Any"; } - - public int hashCode() { return 0xBBBBBBBB; } - - // Make TypeAny a serializable singleton - public static TypeAny INSTANCE = new TypeAny(); - protected TypeAny() { /* exists only to that instantiation */ } - private Object readResolve() { return INSTANCE; } -} diff --git a/sources/scala/runtime/types/TypeAnyVal.java b/sources/scala/runtime/types/TypeAnyVal.java deleted file mode 100644 index 9fe397b57..000000000 --- a/sources/scala/runtime/types/TypeAnyVal.java +++ /dev/null @@ -1,34 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.runtime.RunTime; -import scala.Type; -import scala.Array; - -public class TypeAnyVal extends SpecialType { - public boolean isInstance(Object o) { - throw new UnsupportedOperationException(); - } - - public boolean isSubType(Type that) { - return that == Type.Any || that == this; - } - - public String toString() { return "scala.AnyVal"; } - - public int hashCode() { return 0xCCCCCCCC; } - - // Make TypeAnyVal a serializable singleton - public static TypeAnyVal INSTANCE = new TypeAnyVal(); - protected TypeAnyVal() { /* exists only to that instantiation */ } - private Object readResolve() { return INSTANCE; } -} diff --git a/sources/scala/runtime/types/TypeBoolean.java b/sources/scala/runtime/types/TypeBoolean.java deleted file mode 100644 index 69788a975..000000000 --- a/sources/scala/runtime/types/TypeBoolean.java +++ /dev/null @@ -1,37 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.runtime.RunTime; -import scala.Type; -import scala.Array; -import scala.Boolean; - -public class TypeBoolean extends ValueType { - private final Boolean ZERO = RunTime.box_zvalue(false); - public Object cast(Object o) { - assert scala.runtime.types.Statistics.incTypeCast(); - if (! (o == null || o instanceof scala.Boolean)) - throw new ClassCastException(); // TODO error message - return o; - } - public Object defaultValue() { return ZERO; } - public boolean isSameAsJavaType(Class that) { - return that == java.lang.Boolean.TYPE; - } - public String toString() { return "scala.Boolean"; } - public int hashCode() { return 0x88888888; } - - // Make TypeBoolean a serializable singleton - public static TypeBoolean INSTANCE = new TypeBoolean(); - protected TypeBoolean() { /* exists only to that instantiation */ } - private Object readResolve() { return INSTANCE; } -} diff --git a/sources/scala/runtime/types/TypeByte.java b/sources/scala/runtime/types/TypeByte.java deleted file mode 100644 index cafab096f..000000000 --- a/sources/scala/runtime/types/TypeByte.java +++ /dev/null @@ -1,50 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.runtime.RunTime; -import scala.Type; -import scala.Array; -import scala.Byte; - -public class TypeByte extends ValueType { - private final Byte ZERO = RunTime.box_bvalue((byte)0); - public Object cast(Object o) { - assert scala.runtime.types.Statistics.incTypeCast(); - if (o == null || o instanceof scala.Byte) - return o; - else if (o instanceof scala.Double) - return RunTime.box_bvalue((byte)((scala.Double)o).value); - else if (o instanceof scala.Float) - return RunTime.box_bvalue((byte)((scala.Float)o).value); - else if (o instanceof scala.Long) - return RunTime.box_bvalue((byte)((scala.Long)o).value); - else if (o instanceof scala.Int) - return RunTime.box_bvalue((byte)((scala.Int)o).value); - else if (o instanceof scala.Short) - return RunTime.box_bvalue((byte)((scala.Short)o).value); - else if (o instanceof scala.Char) - return RunTime.box_bvalue((byte)((scala.Char)o).value); - else - throw new ClassCastException(); - } - public Object defaultValue() { return ZERO; } - public boolean isSameAsJavaType(Class that) { - return that == java.lang.Byte.TYPE; - } - public String toString() { return "scala.Byte"; } - public int hashCode() { return 0x77777777; } - - // Make TypeByte a serializable singleton - public static TypeByte INSTANCE = new TypeByte(); - protected TypeByte() { /* exists only to that instantiation */ } - private Object readResolve() { return INSTANCE; } -} diff --git a/sources/scala/runtime/types/TypeChar.java b/sources/scala/runtime/types/TypeChar.java deleted file mode 100644 index 19d42a288..000000000 --- a/sources/scala/runtime/types/TypeChar.java +++ /dev/null @@ -1,50 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.runtime.RunTime; -import scala.Type; -import scala.Array; -import scala.Char; - -public class TypeChar extends ValueType { - private final Char ZERO = RunTime.box_cvalue((char)0); - public Object cast(Object o) { - assert scala.runtime.types.Statistics.incTypeCast(); - if (o == null || o instanceof scala.Char) - return o; - else if (o instanceof scala.Double) - return RunTime.box_cvalue((char)((scala.Double)o).value); - else if (o instanceof scala.Float) - return RunTime.box_cvalue((char)((scala.Float)o).value); - else if (o instanceof scala.Long) - return RunTime.box_cvalue((char)((scala.Long)o).value); - else if (o instanceof scala.Int) - return RunTime.box_cvalue((char)((scala.Int)o).value); - else if (o instanceof scala.Short) - return RunTime.box_cvalue((char)((scala.Short)o).value); - else if (o instanceof scala.Byte) - return RunTime.box_cvalue((char)((scala.Byte)o).value); - else - throw new ClassCastException(); - } - public Object defaultValue() { return ZERO; } - public boolean isSameAsJavaType(Class that) { - return that == char.class; - } - public String toString() { return "scala.Char"; } - public int hashCode() { return 0x66666666; } - - // Make TypeChar a serializable singleton - public static TypeChar INSTANCE = new TypeChar(); - protected TypeChar() { /* exists only to that instantiation */ } - private Object readResolve() { return INSTANCE; } -} diff --git a/sources/scala/runtime/types/TypeConstructor.java b/sources/scala/runtime/types/TypeConstructor.java deleted file mode 100644 index b1a71916c..000000000 --- a/sources/scala/runtime/types/TypeConstructor.java +++ /dev/null @@ -1,157 +0,0 @@ -/* __ * \ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.Type; -import scala.Array; -import scala.runtime.AtomicReference; -import scala.runtime.IOMap; - -/** - * Class modelling a type constructor (this includes non-polymorphic - * types, which are handled as polymorphic types with zero arguments). - * - * @author Michel Schinz - * @version 1.0 - */ - -public final class TypeConstructor implements java.io.Serializable { - public final static TypeConstructor[] EMPTY_ARRAY = - new TypeConstructor[0]; - - private static class Outer implements java.io.Serializable {} - - public final static Object FUNCTION_OUTER = new Outer(); - - /** Java class corresponding to this constructor. */ - public Class clazz; - - /** - * Number of invariant (z), contravariant (m) and covariant (p) - * type arguments. - */ - public final int zCount, mCount, pCount; - - /** - * Level of this type in the hierarchy (scala.AnyRef is at 0, its - * direct children at 1, and so on). - */ - public final int level; - - /** - * Indication of triviality: a constructor is trivial iff it has - * no enclosing class, and no type arguments. - */ - public final boolean isTrivial; - - public final int ancestorCacheDepth; - /** - * "Code" to compute the ancestors for an instance of this - * constructor, based on the ancestors of its not-strongly-trivial - * parents. This code is structured as follows: - * - * l1 n1 p1,0 o1,0 p1,1 o1,1 ... l2 n2 p2,0 o2,0 ... - * - * where all l, n, p and o are integers. ni gives the number of - * additional entries to add to the ancestors of the first parent - * at level li. pi gives the index of the parent in which to pick - * this additional entry, and oi gives the offset of this entry in - * the parent's ancestors. - */ - public final int[] ancestorCode; - - /** Enclosing class for this type constructor */ - private final Object outer; - - private final InstantiationMap instMapModule = new InstantiationMap(); - private final AtomicReference/**/ instances = - new AtomicReference(IOMap.EMPTY); - - private static final ClassLoader loader = - ClassLoader.getSystemClassLoader(); - - private static final int[] EMPTY_ANCESTOR_CODE = new int[0]; - - public TypeConstructor(int level, - String fullName, - Object outer, - int zCount, - int mCount, - int pCount, - int ancestorCacheDepth, - int[] ancestorCode) { - this.level = level; - this.outer = outer; - this.zCount = zCount; - this.mCount = mCount; - this.pCount = pCount; - - this.ancestorCacheDepth = ancestorCacheDepth; - this.ancestorCode = - (ancestorCode == null ? EMPTY_ANCESTOR_CODE : ancestorCode); - - this.isTrivial = (outer == null) && (zCount + pCount + mCount == 0); - - try { - this.clazz = Class.forName(fullName, false, loader); - } catch (ClassNotFoundException e) { - throw new Error(e); - } - - assert (zCount >= 0) && (mCount >= 0) && (pCount >= 0); - } - - public String toString() { - if (outer == null) - return clazz.getName(); - else if (outer == FUNCTION_OUTER) - return "." + clazz.getName(); - else - return outer.toString() + "." + clazz.getName(); - } - - public ScalaClassType getInstantiation(Type[] args) { - ScalaClassType inst = - instMapModule.get((InstantiationMap.T)instances.get(), args); - assert Statistics.incInstantiations(inst == null); - return inst; - } - - public ScalaClassType instantiate(Type[] args, Object parents) { - ScalaClassType tp = new ScalaClassType(this, args, parents); - - try { - InstantiationMap.T oldMap, newMap; - do { - oldMap = (InstantiationMap.T)instances.get(); - newMap = instMapModule.put(oldMap, args, tp); - } while (!instances.compareAndSet(oldMap, newMap)); - } catch (IOMap.ConflictException e) { - return (ScalaClassType)e.oldValue; - } - return tp; - } - - ////////////////////////////////////////////////////////////////////// - - private static class InstantiationMap - extends IOMap - implements java.io.Serializable { - public T put(T map, Type[] inst, ScalaClassType value) - throws ConflictException { - return super.put(map, Type.hashCode(inst), value); - } - - public ScalaClassType get(T map, Type[] inst) { - return (ScalaClassType)super.get(map, Type.hashCode(inst)); - } - } -} diff --git a/sources/scala/runtime/types/TypeDouble.java b/sources/scala/runtime/types/TypeDouble.java deleted file mode 100644 index 0bc22709e..000000000 --- a/sources/scala/runtime/types/TypeDouble.java +++ /dev/null @@ -1,49 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.runtime.RunTime; -import scala.Type; -import scala.Array; - -public public class TypeDouble extends ValueType { - private final scala.Double ZERO = RunTime.box_dvalue(0.0); - public Object cast(Object o) { - assert scala.runtime.types.Statistics.incTypeCast(); - if (o == null || o instanceof scala.Double) - return o; - else if (o instanceof scala.Float) - return RunTime.box_dvalue(((scala.Float)o).value); - else if (o instanceof scala.Long) - return RunTime.box_dvalue(((scala.Long)o).value); - else if (o instanceof scala.Int) - return RunTime.box_dvalue(((scala.Int)o).value); - else if (o instanceof scala.Short) - return RunTime.box_dvalue(((scala.Short)o).value); - else if (o instanceof scala.Char) - return RunTime.box_dvalue(((scala.Char)o).value); - else if (o instanceof scala.Byte) - return RunTime.box_dvalue(((scala.Byte)o).value); - else - throw new ClassCastException(); - } - public Object defaultValue() { return ZERO; } - public boolean isSameAsJavaType(Class that) { - return that == java.lang.Double.TYPE; - } - public String toString() { return "scala.Double"; } - public int hashCode() { return 0x11111111; } - - // Make TypeDouble a serializable singleton - public static TypeDouble INSTANCE = new TypeDouble(); - protected TypeDouble() { /* exists only to that instantiation */ } - private Object readResolve() { return INSTANCE; } -} diff --git a/sources/scala/runtime/types/TypeFloat.java b/sources/scala/runtime/types/TypeFloat.java deleted file mode 100644 index 5f0e18898..000000000 --- a/sources/scala/runtime/types/TypeFloat.java +++ /dev/null @@ -1,49 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.runtime.RunTime; -import scala.Type; -import scala.Array; - -public class TypeFloat extends ValueType { - private final scala.Float ZERO = RunTime.box_fvalue(0.0f); - public Object cast(Object o) { - assert scala.runtime.types.Statistics.incTypeCast(); - if (o == null || o instanceof scala.Float) - return o; - else if (o instanceof scala.Double) - return RunTime.box_fvalue((float)((scala.Double)o).value); - else if (o instanceof scala.Long) - return RunTime.box_fvalue(((scala.Long)o).value); - else if (o instanceof scala.Int) - return RunTime.box_fvalue(((scala.Int)o).value); - else if (o instanceof scala.Short) - return RunTime.box_fvalue(((scala.Short)o).value); - else if (o instanceof scala.Char) - return RunTime.box_fvalue(((scala.Char)o).value); - else if (o instanceof scala.Byte) - return RunTime.box_fvalue(((scala.Byte)o).value); - else - throw new ClassCastException(); - } - public Object defaultValue() { return ZERO; } - public boolean isSameAsJavaType(Class that) { - return that == java.lang.Float.TYPE; - } - public String toString() { return "scala.Float"; } - public int hashCode() { return 0x22222222; } - - // Make TypeFloat a serializable singleton - public static TypeFloat INSTANCE = new TypeFloat(); - protected TypeFloat() { /* exists only to that instantiation */ } - private Object readResolve() { return INSTANCE; } -} diff --git a/sources/scala/runtime/types/TypeInt.java b/sources/scala/runtime/types/TypeInt.java deleted file mode 100644 index 3c29b70c0..000000000 --- a/sources/scala/runtime/types/TypeInt.java +++ /dev/null @@ -1,50 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.runtime.RunTime; -import scala.Type; -import scala.Array; -import scala.Int; - -public class TypeInt extends ValueType { - private final Int ZERO = RunTime.box_ivalue(0); - public Object cast(Object o) { - assert scala.runtime.types.Statistics.incTypeCast(); - if (o == null || o instanceof scala.Int) - return o; - else if (o instanceof scala.Double) - return RunTime.box_ivalue((int)((scala.Double)o).value); - else if (o instanceof scala.Float) - return RunTime.box_ivalue((int)((scala.Float)o).value); - else if (o instanceof scala.Long) - return RunTime.box_ivalue((int)((scala.Long)o).value); - else if (o instanceof scala.Short) - return RunTime.box_ivalue(((scala.Short)o).value); - else if (o instanceof scala.Char) - return RunTime.box_ivalue(((scala.Char)o).value); - else if (o instanceof scala.Byte) - return RunTime.box_ivalue(((scala.Byte)o).value); - else - throw new ClassCastException(); - } - public Object defaultValue() { return ZERO; } - public boolean isSameAsJavaType(Class that) { - return that == java.lang.Integer.TYPE; - } - public String toString() { return "scala.Int"; } - public int hashCode() { return 0x44444444; } - - // Make TypeInt a serializable singleton - public static TypeInt INSTANCE = new TypeInt(); - protected TypeInt() { /* exists only to that instantiation */ } - private Object readResolve() { return INSTANCE; } -} diff --git a/sources/scala/runtime/types/TypeLong.java b/sources/scala/runtime/types/TypeLong.java deleted file mode 100644 index cc03d72e8..000000000 --- a/sources/scala/runtime/types/TypeLong.java +++ /dev/null @@ -1,49 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.runtime.RunTime; -import scala.Type; -import scala.Array; - -public class TypeLong extends ValueType { - private final scala.Long ZERO = RunTime.box_lvalue(0l); - public Object cast(Object o) { - assert scala.runtime.types.Statistics.incTypeCast(); - if (o == null || o instanceof scala.Long) - return o; - else if (o instanceof scala.Double) - return RunTime.box_lvalue((long)((scala.Double)o).value); - else if (o instanceof scala.Float) - return RunTime.box_lvalue((long)((scala.Float)o).value); - else if (o instanceof scala.Int) - return RunTime.box_lvalue(((scala.Int)o).value); - else if (o instanceof scala.Short) - return RunTime.box_lvalue(((scala.Short)o).value); - else if (o instanceof scala.Char) - return RunTime.box_lvalue(((scala.Char)o).value); - else if (o instanceof scala.Byte) - return RunTime.box_lvalue(((scala.Byte)o).value); - else - throw new ClassCastException(); - } - public Object defaultValue() { return ZERO; } - public boolean isSameAsJavaType(Class that) { - return that == java.lang.Long.TYPE; - } - public String toString() { return "scala.Long"; } - public int hashCode() { return 0x33333333; } - - // Make TypeLong a serializable singleton - public static TypeLong INSTANCE = new TypeLong(); - protected TypeLong() { /* exists only to that instantiation */ } - private Object readResolve() { return INSTANCE; } -} diff --git a/sources/scala/runtime/types/TypeShort.java b/sources/scala/runtime/types/TypeShort.java deleted file mode 100644 index 286a51859..000000000 --- a/sources/scala/runtime/types/TypeShort.java +++ /dev/null @@ -1,49 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.runtime.RunTime; -import scala.Type; -import scala.Array; - -public class TypeShort extends ValueType { - private final scala.Short ZERO = RunTime.box_svalue((short)0); - public Object cast(Object o) { - assert scala.runtime.types.Statistics.incTypeCast(); - if (o == null || o instanceof scala.Short) - return o; - else if (o instanceof scala.Double) - return RunTime.box_svalue((short)((scala.Double)o).value); - else if (o instanceof scala.Float) - return RunTime.box_svalue((short)((scala.Float)o).value); - else if (o instanceof scala.Long) - return RunTime.box_svalue((short)((scala.Long)o).value); - else if (o instanceof scala.Int) - return RunTime.box_svalue((short)((scala.Int)o).value); - else if (o instanceof scala.Char) - return RunTime.box_svalue((short)((scala.Char)o).value); - else if (o instanceof scala.Byte) - return RunTime.box_svalue(((scala.Byte)o).value); - else - throw new ClassCastException(); - } - public Object defaultValue() { return ZERO; } - public boolean isSameAsJavaType(Class that) { - return that == java.lang.Short.TYPE; - } - public String toString() { return "scala.Short"; } - public int hashCode() { return 0x55555555; } - - // Make TypeShort a serializable singleton - public static TypeShort INSTANCE = new TypeShort(); - protected TypeShort() { /* exists only to that instantiation */ } - private Object readResolve() { return INSTANCE; } -} diff --git a/sources/scala/runtime/types/TypeUnit.java b/sources/scala/runtime/types/TypeUnit.java deleted file mode 100644 index 29edaa325..000000000 --- a/sources/scala/runtime/types/TypeUnit.java +++ /dev/null @@ -1,37 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.runtime.RunTime; -import scala.Type; -import scala.Array; -import scala.Unit; - -public class TypeUnit extends ValueType { - private final Unit ZERO = RunTime.box_uvalue(); - public Object cast(Object o) { - assert scala.runtime.types.Statistics.incTypeCast(); - if (! (o == null || o instanceof scala.Unit)) - throw new ClassCastException(); // TODO error message - return o; - } - public Object defaultValue() { return ZERO; } - public boolean isSameAsJavaType(Class that) { - return that == java.lang.Void.TYPE; - } - public String toString() { return "scala.Unit"; } - public int hashCode() { return 0x99999999; } - - // Make TypeUnit a serializable singleton - public static TypeUnit INSTANCE = new TypeUnit(); - protected TypeUnit() { /* exists only to that instantiation */ } - private Object readResolve() { return INSTANCE; } -} diff --git a/sources/scala/runtime/types/ValueType.java b/sources/scala/runtime/types/ValueType.java deleted file mode 100644 index 0cffb9c85..000000000 --- a/sources/scala/runtime/types/ValueType.java +++ /dev/null @@ -1,38 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -// $Id$ - -package scala.runtime.types; - -import scala.Type; -import scala.Array; - -/** - * Abstract superclass for all value types. - * - * @author Michel Schinz - * @version 1.0 - */ - -abstract public class ValueType extends Type { - public boolean isInstance(Object o) { - throw new UnsupportedOperationException(); - } - public boolean isSubType(Type that) { - return that == Type.Any - || that == Type.AnyVal - || that == this; - } - public boolean isSameType(Type that) { - return this == that; - } - public Array newArray(int size) { - throw new Error("internal error (Scala runtime)"); - } -} diff --git a/sources/scala/tools/nsc/CompilationUnits.scala b/src/compiler/scala/tools/nsc/CompilationUnits.scala similarity index 100% rename from sources/scala/tools/nsc/CompilationUnits.scala rename to src/compiler/scala/tools/nsc/CompilationUnits.scala diff --git a/sources/scala/tools/nsc/CompilerCommand.scala b/src/compiler/scala/tools/nsc/CompilerCommand.scala similarity index 100% rename from sources/scala/tools/nsc/CompilerCommand.scala rename to src/compiler/scala/tools/nsc/CompilerCommand.scala diff --git a/sources/scala/tools/nsc/CompilerRun.scala b/src/compiler/scala/tools/nsc/CompilerRun.scala similarity index 100% rename from sources/scala/tools/nsc/CompilerRun.scala rename to src/compiler/scala/tools/nsc/CompilerRun.scala diff --git a/sources/scala/tools/nsc/EvalLoop.scala b/src/compiler/scala/tools/nsc/EvalLoop.scala similarity index 100% rename from sources/scala/tools/nsc/EvalLoop.scala rename to src/compiler/scala/tools/nsc/EvalLoop.scala diff --git a/sources/scala/tools/nsc/FatalError.scala b/src/compiler/scala/tools/nsc/FatalError.scala similarity index 100% rename from sources/scala/tools/nsc/FatalError.scala rename to src/compiler/scala/tools/nsc/FatalError.scala diff --git a/sources/scala/tools/nsc/Global.scala b/src/compiler/scala/tools/nsc/Global.scala similarity index 100% rename from sources/scala/tools/nsc/Global.scala rename to src/compiler/scala/tools/nsc/Global.scala diff --git a/sources/scala/tools/nsc/Interpreter.scala b/src/compiler/scala/tools/nsc/Interpreter.scala similarity index 100% rename from sources/scala/tools/nsc/Interpreter.scala rename to src/compiler/scala/tools/nsc/Interpreter.scala diff --git a/sources/scala/tools/nsc/Main.scala b/src/compiler/scala/tools/nsc/Main.scala similarity index 100% rename from sources/scala/tools/nsc/Main.scala rename to src/compiler/scala/tools/nsc/Main.scala diff --git a/sources/scala/tools/nsc/MainInterpreter.scala b/src/compiler/scala/tools/nsc/MainInterpreter.scala similarity index 100% rename from sources/scala/tools/nsc/MainInterpreter.scala rename to src/compiler/scala/tools/nsc/MainInterpreter.scala diff --git a/sources/scala/tools/nsc/MainTokenMetric.scala b/src/compiler/scala/tools/nsc/MainTokenMetric.scala similarity index 100% rename from sources/scala/tools/nsc/MainTokenMetric.scala rename to src/compiler/scala/tools/nsc/MainTokenMetric.scala diff --git a/sources/scala/tools/nsc/NoPhase.scala b/src/compiler/scala/tools/nsc/NoPhase.scala similarity index 100% rename from sources/scala/tools/nsc/NoPhase.scala rename to src/compiler/scala/tools/nsc/NoPhase.scala diff --git a/sources/scala/tools/nsc/Phase.scala b/src/compiler/scala/tools/nsc/Phase.scala similarity index 100% rename from sources/scala/tools/nsc/Phase.scala rename to src/compiler/scala/tools/nsc/Phase.scala diff --git a/sources/scala/tools/nsc/Settings.scala b/src/compiler/scala/tools/nsc/Settings.scala similarity index 100% rename from sources/scala/tools/nsc/Settings.scala rename to src/compiler/scala/tools/nsc/Settings.scala diff --git a/sources/scala/tools/nsc/SubComponent.scala b/src/compiler/scala/tools/nsc/SubComponent.scala similarity index 100% rename from sources/scala/tools/nsc/SubComponent.scala rename to src/compiler/scala/tools/nsc/SubComponent.scala diff --git a/sources/scala/tools/nsc/ant/NSC.scala b/src/compiler/scala/tools/nsc/ant/NSC.scala similarity index 100% rename from sources/scala/tools/nsc/ant/NSC.scala rename to src/compiler/scala/tools/nsc/ant/NSC.scala diff --git a/sources/scala/tools/nsc/ast/TreeBrowsers.scala b/src/compiler/scala/tools/nsc/ast/TreeBrowsers.scala similarity index 100% rename from sources/scala/tools/nsc/ast/TreeBrowsers.scala rename to src/compiler/scala/tools/nsc/ast/TreeBrowsers.scala diff --git a/sources/scala/tools/nsc/ast/TreeGen.scala b/src/compiler/scala/tools/nsc/ast/TreeGen.scala similarity index 100% rename from sources/scala/tools/nsc/ast/TreeGen.scala rename to src/compiler/scala/tools/nsc/ast/TreeGen.scala diff --git a/sources/scala/tools/nsc/ast/TreeInfo.scala b/src/compiler/scala/tools/nsc/ast/TreeInfo.scala similarity index 100% rename from sources/scala/tools/nsc/ast/TreeInfo.scala rename to src/compiler/scala/tools/nsc/ast/TreeInfo.scala diff --git a/sources/scala/tools/nsc/ast/TreePrinters.scala b/src/compiler/scala/tools/nsc/ast/TreePrinters.scala similarity index 100% rename from sources/scala/tools/nsc/ast/TreePrinters.scala rename to src/compiler/scala/tools/nsc/ast/TreePrinters.scala diff --git a/sources/scala/tools/nsc/ast/Trees.scala b/src/compiler/scala/tools/nsc/ast/Trees.scala similarity index 100% rename from sources/scala/tools/nsc/ast/Trees.scala rename to src/compiler/scala/tools/nsc/ast/Trees.scala diff --git a/sources/scala/tools/nsc/ast/parser/MarkupParsers.scala b/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala similarity index 100% rename from sources/scala/tools/nsc/ast/parser/MarkupParsers.scala rename to src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala diff --git a/sources/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala similarity index 100% rename from sources/scala/tools/nsc/ast/parser/Parsers.scala rename to src/compiler/scala/tools/nsc/ast/parser/Parsers.scala diff --git a/sources/scala/tools/nsc/ast/parser/Scanners.scala b/src/compiler/scala/tools/nsc/ast/parser/Scanners.scala similarity index 100% rename from sources/scala/tools/nsc/ast/parser/Scanners.scala rename to src/compiler/scala/tools/nsc/ast/parser/Scanners.scala diff --git a/sources/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala b/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala similarity index 100% rename from sources/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala rename to src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala diff --git a/sources/scala/tools/nsc/ast/parser/SyntaxAnalyzer.scala b/src/compiler/scala/tools/nsc/ast/parser/SyntaxAnalyzer.scala similarity index 100% rename from sources/scala/tools/nsc/ast/parser/SyntaxAnalyzer.scala rename to src/compiler/scala/tools/nsc/ast/parser/SyntaxAnalyzer.scala diff --git a/sources/scala/tools/nsc/ast/parser/Tokens.scala b/src/compiler/scala/tools/nsc/ast/parser/Tokens.scala similarity index 100% rename from sources/scala/tools/nsc/ast/parser/Tokens.scala rename to src/compiler/scala/tools/nsc/ast/parser/Tokens.scala diff --git a/sources/scala/tools/nsc/ast/parser/TreeBuilder.scala b/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala similarity index 100% rename from sources/scala/tools/nsc/ast/parser/TreeBuilder.scala rename to src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala diff --git a/sources/scala/tools/nsc/backend/ScalaPrimitives.scala b/src/compiler/scala/tools/nsc/backend/ScalaPrimitives.scala similarity index 100% rename from sources/scala/tools/nsc/backend/ScalaPrimitives.scala rename to src/compiler/scala/tools/nsc/backend/ScalaPrimitives.scala diff --git a/sources/scala/tools/nsc/backend/WorklistAlgorithm.scala b/src/compiler/scala/tools/nsc/backend/WorklistAlgorithm.scala similarity index 100% rename from sources/scala/tools/nsc/backend/WorklistAlgorithm.scala rename to src/compiler/scala/tools/nsc/backend/WorklistAlgorithm.scala diff --git a/sources/scala/tools/nsc/backend/icode/BasicBlocks.scala b/src/compiler/scala/tools/nsc/backend/icode/BasicBlocks.scala similarity index 100% rename from sources/scala/tools/nsc/backend/icode/BasicBlocks.scala rename to src/compiler/scala/tools/nsc/backend/icode/BasicBlocks.scala diff --git a/sources/scala/tools/nsc/backend/icode/CheckerError.scala b/src/compiler/scala/tools/nsc/backend/icode/CheckerError.scala similarity index 100% rename from sources/scala/tools/nsc/backend/icode/CheckerError.scala rename to src/compiler/scala/tools/nsc/backend/icode/CheckerError.scala diff --git a/sources/scala/tools/nsc/backend/icode/Checkers.scala b/src/compiler/scala/tools/nsc/backend/icode/Checkers.scala similarity index 100% rename from sources/scala/tools/nsc/backend/icode/Checkers.scala rename to src/compiler/scala/tools/nsc/backend/icode/Checkers.scala diff --git a/sources/scala/tools/nsc/backend/icode/ExceptionHandlers.scala b/src/compiler/scala/tools/nsc/backend/icode/ExceptionHandlers.scala similarity index 100% rename from sources/scala/tools/nsc/backend/icode/ExceptionHandlers.scala rename to src/compiler/scala/tools/nsc/backend/icode/ExceptionHandlers.scala diff --git a/sources/scala/tools/nsc/backend/icode/GenICode.scala b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala similarity index 100% rename from sources/scala/tools/nsc/backend/icode/GenICode.scala rename to src/compiler/scala/tools/nsc/backend/icode/GenICode.scala diff --git a/sources/scala/tools/nsc/backend/icode/ICodes.scala b/src/compiler/scala/tools/nsc/backend/icode/ICodes.scala similarity index 100% rename from sources/scala/tools/nsc/backend/icode/ICodes.scala rename to src/compiler/scala/tools/nsc/backend/icode/ICodes.scala diff --git a/sources/scala/tools/nsc/backend/icode/Linearizers.scala b/src/compiler/scala/tools/nsc/backend/icode/Linearizers.scala similarity index 100% rename from sources/scala/tools/nsc/backend/icode/Linearizers.scala rename to src/compiler/scala/tools/nsc/backend/icode/Linearizers.scala diff --git a/sources/scala/tools/nsc/backend/icode/Members.scala b/src/compiler/scala/tools/nsc/backend/icode/Members.scala similarity index 100% rename from sources/scala/tools/nsc/backend/icode/Members.scala rename to src/compiler/scala/tools/nsc/backend/icode/Members.scala diff --git a/sources/scala/tools/nsc/backend/icode/Opcodes.scala b/src/compiler/scala/tools/nsc/backend/icode/Opcodes.scala similarity index 100% rename from sources/scala/tools/nsc/backend/icode/Opcodes.scala rename to src/compiler/scala/tools/nsc/backend/icode/Opcodes.scala diff --git a/sources/scala/tools/nsc/backend/icode/Primitives.scala b/src/compiler/scala/tools/nsc/backend/icode/Primitives.scala similarity index 100% rename from sources/scala/tools/nsc/backend/icode/Primitives.scala rename to src/compiler/scala/tools/nsc/backend/icode/Primitives.scala diff --git a/sources/scala/tools/nsc/backend/icode/Printers.scala b/src/compiler/scala/tools/nsc/backend/icode/Printers.scala similarity index 100% rename from sources/scala/tools/nsc/backend/icode/Printers.scala rename to src/compiler/scala/tools/nsc/backend/icode/Printers.scala diff --git a/sources/scala/tools/nsc/backend/icode/TypeKinds.scala b/src/compiler/scala/tools/nsc/backend/icode/TypeKinds.scala similarity index 100% rename from sources/scala/tools/nsc/backend/icode/TypeKinds.scala rename to src/compiler/scala/tools/nsc/backend/icode/TypeKinds.scala diff --git a/sources/scala/tools/nsc/backend/icode/TypeStacks.scala b/src/compiler/scala/tools/nsc/backend/icode/TypeStacks.scala similarity index 100% rename from sources/scala/tools/nsc/backend/icode/TypeStacks.scala rename to src/compiler/scala/tools/nsc/backend/icode/TypeStacks.scala diff --git a/sources/scala/tools/nsc/backend/jvm/GenJVM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala similarity index 100% rename from sources/scala/tools/nsc/backend/jvm/GenJVM.scala rename to src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala diff --git a/sources/scala/tools/nsc/matching/AlgebraicMatchers.scala b/src/compiler/scala/tools/nsc/matching/AlgebraicMatchers.scala similarity index 100% rename from sources/scala/tools/nsc/matching/AlgebraicMatchers.scala rename to src/compiler/scala/tools/nsc/matching/AlgebraicMatchers.scala diff --git a/sources/scala/tools/nsc/matching/Autom2.scala b/src/compiler/scala/tools/nsc/matching/Autom2.scala similarity index 100% rename from sources/scala/tools/nsc/matching/Autom2.scala rename to src/compiler/scala/tools/nsc/matching/Autom2.scala diff --git a/sources/scala/tools/nsc/matching/BerrySethis.scala b/src/compiler/scala/tools/nsc/matching/BerrySethis.scala similarity index 100% rename from sources/scala/tools/nsc/matching/BerrySethis.scala rename to src/compiler/scala/tools/nsc/matching/BerrySethis.scala diff --git a/sources/scala/tools/nsc/matching/CodeFactory.scala b/src/compiler/scala/tools/nsc/matching/CodeFactory.scala similarity index 100% rename from sources/scala/tools/nsc/matching/CodeFactory.scala rename to src/compiler/scala/tools/nsc/matching/CodeFactory.scala diff --git a/sources/scala/tools/nsc/matching/DetWordAutoms.scala b/src/compiler/scala/tools/nsc/matching/DetWordAutoms.scala similarity index 100% rename from sources/scala/tools/nsc/matching/DetWordAutoms.scala rename to src/compiler/scala/tools/nsc/matching/DetWordAutoms.scala diff --git a/sources/scala/tools/nsc/matching/LeftTracers.scala b/src/compiler/scala/tools/nsc/matching/LeftTracers.scala similarity index 100% rename from sources/scala/tools/nsc/matching/LeftTracers.scala rename to src/compiler/scala/tools/nsc/matching/LeftTracers.scala diff --git a/sources/scala/tools/nsc/matching/MatcherLabels.scala b/src/compiler/scala/tools/nsc/matching/MatcherLabels.scala similarity index 100% rename from sources/scala/tools/nsc/matching/MatcherLabels.scala rename to src/compiler/scala/tools/nsc/matching/MatcherLabels.scala diff --git a/sources/scala/tools/nsc/matching/NondetWordAutoms.scala b/src/compiler/scala/tools/nsc/matching/NondetWordAutoms.scala similarity index 100% rename from sources/scala/tools/nsc/matching/NondetWordAutoms.scala rename to src/compiler/scala/tools/nsc/matching/NondetWordAutoms.scala diff --git a/sources/scala/tools/nsc/matching/Npair.scala b/src/compiler/scala/tools/nsc/matching/Npair.scala similarity index 100% rename from sources/scala/tools/nsc/matching/Npair.scala rename to src/compiler/scala/tools/nsc/matching/Npair.scala diff --git a/sources/scala/tools/nsc/matching/PatternMatchers.scala b/src/compiler/scala/tools/nsc/matching/PatternMatchers.scala similarity index 100% rename from sources/scala/tools/nsc/matching/PatternMatchers.scala rename to src/compiler/scala/tools/nsc/matching/PatternMatchers.scala diff --git a/sources/scala/tools/nsc/matching/PatternNodeCreator.scala b/src/compiler/scala/tools/nsc/matching/PatternNodeCreator.scala similarity index 100% rename from sources/scala/tools/nsc/matching/PatternNodeCreator.scala rename to src/compiler/scala/tools/nsc/matching/PatternNodeCreator.scala diff --git a/sources/scala/tools/nsc/matching/PatternNodes.scala b/src/compiler/scala/tools/nsc/matching/PatternNodes.scala similarity index 100% rename from sources/scala/tools/nsc/matching/PatternNodes.scala rename to src/compiler/scala/tools/nsc/matching/PatternNodes.scala diff --git a/sources/scala/tools/nsc/matching/RightTracers.scala b/src/compiler/scala/tools/nsc/matching/RightTracers.scala similarity index 100% rename from sources/scala/tools/nsc/matching/RightTracers.scala rename to src/compiler/scala/tools/nsc/matching/RightTracers.scala diff --git a/sources/scala/tools/nsc/matching/SequenceMatchers.scala b/src/compiler/scala/tools/nsc/matching/SequenceMatchers.scala similarity index 100% rename from sources/scala/tools/nsc/matching/SequenceMatchers.scala rename to src/compiler/scala/tools/nsc/matching/SequenceMatchers.scala diff --git a/sources/scala/tools/nsc/matching/StateSetComparator.scala b/src/compiler/scala/tools/nsc/matching/StateSetComparator.scala similarity index 100% rename from sources/scala/tools/nsc/matching/StateSetComparator.scala rename to src/compiler/scala/tools/nsc/matching/StateSetComparator.scala diff --git a/sources/scala/tools/nsc/matching/TransMatcher.scala b/src/compiler/scala/tools/nsc/matching/TransMatcher.scala similarity index 100% rename from sources/scala/tools/nsc/matching/TransMatcher.scala rename to src/compiler/scala/tools/nsc/matching/TransMatcher.scala diff --git a/sources/scala/tools/nsc/matching/WordAutoms.scala b/src/compiler/scala/tools/nsc/matching/WordAutoms.scala similarity index 100% rename from sources/scala/tools/nsc/matching/WordAutoms.scala rename to src/compiler/scala/tools/nsc/matching/WordAutoms.scala diff --git a/sources/scala/tools/nsc/models/Models.scala.xxx b/src/compiler/scala/tools/nsc/models/Models.scala.xxx similarity index 100% rename from sources/scala/tools/nsc/models/Models.scala.xxx rename to src/compiler/scala/tools/nsc/models/Models.scala.xxx diff --git a/sources/scala/tools/nsc/models/SemanticTokens.scala b/src/compiler/scala/tools/nsc/models/SemanticTokens.scala similarity index 100% rename from sources/scala/tools/nsc/models/SemanticTokens.scala rename to src/compiler/scala/tools/nsc/models/SemanticTokens.scala diff --git a/sources/scala/tools/nsc/models/Signatures.scala b/src/compiler/scala/tools/nsc/models/Signatures.scala similarity index 100% rename from sources/scala/tools/nsc/models/Signatures.scala rename to src/compiler/scala/tools/nsc/models/Signatures.scala diff --git a/sources/scala/tools/nsc/reporters/AbstractReporter.scala b/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala similarity index 100% rename from sources/scala/tools/nsc/reporters/AbstractReporter.scala rename to src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala diff --git a/sources/scala/tools/nsc/reporters/ConsoleReporter.scala b/src/compiler/scala/tools/nsc/reporters/ConsoleReporter.scala similarity index 100% rename from sources/scala/tools/nsc/reporters/ConsoleReporter.scala rename to src/compiler/scala/tools/nsc/reporters/ConsoleReporter.scala diff --git a/sources/scala/tools/nsc/reporters/Reporter.scala b/src/compiler/scala/tools/nsc/reporters/Reporter.scala similarity index 100% rename from sources/scala/tools/nsc/reporters/Reporter.scala rename to src/compiler/scala/tools/nsc/reporters/Reporter.scala diff --git a/sources/scala/tools/nsc/reporters/ReporterTimer.scala b/src/compiler/scala/tools/nsc/reporters/ReporterTimer.scala similarity index 100% rename from sources/scala/tools/nsc/reporters/ReporterTimer.scala rename to src/compiler/scala/tools/nsc/reporters/ReporterTimer.scala diff --git a/sources/scala/tools/nsc/reporters/StoreReporter.scala b/src/compiler/scala/tools/nsc/reporters/StoreReporter.scala similarity index 100% rename from sources/scala/tools/nsc/reporters/StoreReporter.scala rename to src/compiler/scala/tools/nsc/reporters/StoreReporter.scala diff --git a/sources/scala/tools/nsc/symtab/Constants.scala b/src/compiler/scala/tools/nsc/symtab/Constants.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/Constants.scala rename to src/compiler/scala/tools/nsc/symtab/Constants.scala diff --git a/sources/scala/tools/nsc/symtab/Definitions.scala b/src/compiler/scala/tools/nsc/symtab/Definitions.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/Definitions.scala rename to src/compiler/scala/tools/nsc/symtab/Definitions.scala diff --git a/sources/scala/tools/nsc/symtab/Flags.scala b/src/compiler/scala/tools/nsc/symtab/Flags.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/Flags.scala rename to src/compiler/scala/tools/nsc/symtab/Flags.scala diff --git a/sources/scala/tools/nsc/symtab/InfoTransformers.scala b/src/compiler/scala/tools/nsc/symtab/InfoTransformers.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/InfoTransformers.scala rename to src/compiler/scala/tools/nsc/symtab/InfoTransformers.scala diff --git a/sources/scala/tools/nsc/symtab/Names.scala b/src/compiler/scala/tools/nsc/symtab/Names.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/Names.scala rename to src/compiler/scala/tools/nsc/symtab/Names.scala diff --git a/sources/scala/tools/nsc/symtab/Scopes.scala b/src/compiler/scala/tools/nsc/symtab/Scopes.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/Scopes.scala rename to src/compiler/scala/tools/nsc/symtab/Scopes.scala diff --git a/sources/scala/tools/nsc/symtab/StdNames.scala b/src/compiler/scala/tools/nsc/symtab/StdNames.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/StdNames.scala rename to src/compiler/scala/tools/nsc/symtab/StdNames.scala diff --git a/sources/scala/tools/nsc/symtab/SymbolLoaders.scala b/src/compiler/scala/tools/nsc/symtab/SymbolLoaders.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/SymbolLoaders.scala rename to src/compiler/scala/tools/nsc/symtab/SymbolLoaders.scala diff --git a/sources/scala/tools/nsc/symtab/SymbolTable.scala b/src/compiler/scala/tools/nsc/symtab/SymbolTable.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/SymbolTable.scala rename to src/compiler/scala/tools/nsc/symtab/SymbolTable.scala diff --git a/sources/scala/tools/nsc/symtab/Symbols.scala b/src/compiler/scala/tools/nsc/symtab/Symbols.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/Symbols.scala rename to src/compiler/scala/tools/nsc/symtab/Symbols.scala diff --git a/sources/scala/tools/nsc/symtab/Types.scala b/src/compiler/scala/tools/nsc/symtab/Types.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/Types.scala rename to src/compiler/scala/tools/nsc/symtab/Types.scala diff --git a/sources/scala/tools/nsc/symtab/classfile/ClassfileConstants.scala b/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileConstants.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/classfile/ClassfileConstants.scala rename to src/compiler/scala/tools/nsc/symtab/classfile/ClassfileConstants.scala diff --git a/sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala b/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala rename to src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala diff --git a/sources/scala/tools/nsc/symtab/classfile/MetaParser.scala b/src/compiler/scala/tools/nsc/symtab/classfile/MetaParser.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/classfile/MetaParser.scala rename to src/compiler/scala/tools/nsc/symtab/classfile/MetaParser.scala diff --git a/sources/scala/tools/nsc/symtab/classfile/PickleBuffer.scala b/src/compiler/scala/tools/nsc/symtab/classfile/PickleBuffer.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/classfile/PickleBuffer.scala rename to src/compiler/scala/tools/nsc/symtab/classfile/PickleBuffer.scala diff --git a/sources/scala/tools/nsc/symtab/classfile/PickleFormat.scala b/src/compiler/scala/tools/nsc/symtab/classfile/PickleFormat.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/classfile/PickleFormat.scala rename to src/compiler/scala/tools/nsc/symtab/classfile/PickleFormat.scala diff --git a/sources/scala/tools/nsc/symtab/classfile/Pickler.scala b/src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/classfile/Pickler.scala rename to src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala diff --git a/sources/scala/tools/nsc/symtab/classfile/SymblfileParser.scala b/src/compiler/scala/tools/nsc/symtab/classfile/SymblfileParser.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/classfile/SymblfileParser.scala rename to src/compiler/scala/tools/nsc/symtab/classfile/SymblfileParser.scala diff --git a/sources/scala/tools/nsc/symtab/classfile/UnPickler.scala b/src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala similarity index 100% rename from sources/scala/tools/nsc/symtab/classfile/UnPickler.scala rename to src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala diff --git a/sources/scala/tools/nsc/transform/AddInterfaces.scala b/src/compiler/scala/tools/nsc/transform/AddInterfaces.scala similarity index 100% rename from sources/scala/tools/nsc/transform/AddInterfaces.scala rename to src/compiler/scala/tools/nsc/transform/AddInterfaces.scala diff --git a/sources/scala/tools/nsc/transform/Constructors.scala b/src/compiler/scala/tools/nsc/transform/Constructors.scala similarity index 100% rename from sources/scala/tools/nsc/transform/Constructors.scala rename to src/compiler/scala/tools/nsc/transform/Constructors.scala diff --git a/sources/scala/tools/nsc/transform/Erasure.scala b/src/compiler/scala/tools/nsc/transform/Erasure.scala similarity index 100% rename from sources/scala/tools/nsc/transform/Erasure.scala rename to src/compiler/scala/tools/nsc/transform/Erasure.scala diff --git a/sources/scala/tools/nsc/transform/ExplicitOuter.scala b/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala similarity index 100% rename from sources/scala/tools/nsc/transform/ExplicitOuter.scala rename to src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala diff --git a/sources/scala/tools/nsc/transform/Flatten.scala b/src/compiler/scala/tools/nsc/transform/Flatten.scala similarity index 100% rename from sources/scala/tools/nsc/transform/Flatten.scala rename to src/compiler/scala/tools/nsc/transform/Flatten.scala diff --git a/sources/scala/tools/nsc/transform/InfoTransform.scala b/src/compiler/scala/tools/nsc/transform/InfoTransform.scala similarity index 100% rename from sources/scala/tools/nsc/transform/InfoTransform.scala rename to src/compiler/scala/tools/nsc/transform/InfoTransform.scala diff --git a/sources/scala/tools/nsc/transform/LambdaLift.scala b/src/compiler/scala/tools/nsc/transform/LambdaLift.scala similarity index 100% rename from sources/scala/tools/nsc/transform/LambdaLift.scala rename to src/compiler/scala/tools/nsc/transform/LambdaLift.scala diff --git a/sources/scala/tools/nsc/transform/Mixin.scala b/src/compiler/scala/tools/nsc/transform/Mixin.scala similarity index 100% rename from sources/scala/tools/nsc/transform/Mixin.scala rename to src/compiler/scala/tools/nsc/transform/Mixin.scala diff --git a/sources/scala/tools/nsc/transform/OverridingPairs.scala b/src/compiler/scala/tools/nsc/transform/OverridingPairs.scala similarity index 100% rename from sources/scala/tools/nsc/transform/OverridingPairs.scala rename to src/compiler/scala/tools/nsc/transform/OverridingPairs.scala diff --git a/sources/scala/tools/nsc/transform/SampleTransform.scala b/src/compiler/scala/tools/nsc/transform/SampleTransform.scala similarity index 100% rename from sources/scala/tools/nsc/transform/SampleTransform.scala rename to src/compiler/scala/tools/nsc/transform/SampleTransform.scala diff --git a/sources/scala/tools/nsc/transform/TailCalls.scala b/src/compiler/scala/tools/nsc/transform/TailCalls.scala similarity index 100% rename from sources/scala/tools/nsc/transform/TailCalls.scala rename to src/compiler/scala/tools/nsc/transform/TailCalls.scala diff --git a/sources/scala/tools/nsc/transform/Transform.scala b/src/compiler/scala/tools/nsc/transform/Transform.scala similarity index 100% rename from sources/scala/tools/nsc/transform/Transform.scala rename to src/compiler/scala/tools/nsc/transform/Transform.scala diff --git a/sources/scala/tools/nsc/transform/UnCurry.scala b/src/compiler/scala/tools/nsc/transform/UnCurry.scala similarity index 100% rename from sources/scala/tools/nsc/transform/UnCurry.scala rename to src/compiler/scala/tools/nsc/transform/UnCurry.scala diff --git a/sources/scala/tools/nsc/typechecker/Analyzer.scala b/src/compiler/scala/tools/nsc/typechecker/Analyzer.scala similarity index 100% rename from sources/scala/tools/nsc/typechecker/Analyzer.scala rename to src/compiler/scala/tools/nsc/typechecker/Analyzer.scala diff --git a/sources/scala/tools/nsc/typechecker/Codification.scala b/src/compiler/scala/tools/nsc/typechecker/Codification.scala similarity index 100% rename from sources/scala/tools/nsc/typechecker/Codification.scala rename to src/compiler/scala/tools/nsc/typechecker/Codification.scala diff --git a/sources/scala/tools/nsc/typechecker/ConstantFolder.scala b/src/compiler/scala/tools/nsc/typechecker/ConstantFolder.scala similarity index 100% rename from sources/scala/tools/nsc/typechecker/ConstantFolder.scala rename to src/compiler/scala/tools/nsc/typechecker/ConstantFolder.scala diff --git a/sources/scala/tools/nsc/typechecker/Contexts.scala b/src/compiler/scala/tools/nsc/typechecker/Contexts.scala similarity index 100% rename from sources/scala/tools/nsc/typechecker/Contexts.scala rename to src/compiler/scala/tools/nsc/typechecker/Contexts.scala diff --git a/sources/scala/tools/nsc/typechecker/EtaExpansion.scala b/src/compiler/scala/tools/nsc/typechecker/EtaExpansion.scala similarity index 100% rename from sources/scala/tools/nsc/typechecker/EtaExpansion.scala rename to src/compiler/scala/tools/nsc/typechecker/EtaExpansion.scala diff --git a/sources/scala/tools/nsc/typechecker/Infer.scala b/src/compiler/scala/tools/nsc/typechecker/Infer.scala similarity index 100% rename from sources/scala/tools/nsc/typechecker/Infer.scala rename to src/compiler/scala/tools/nsc/typechecker/Infer.scala diff --git a/sources/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala similarity index 100% rename from sources/scala/tools/nsc/typechecker/Namers.scala rename to src/compiler/scala/tools/nsc/typechecker/Namers.scala diff --git a/sources/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala similarity index 100% rename from sources/scala/tools/nsc/typechecker/RefChecks.scala rename to src/compiler/scala/tools/nsc/typechecker/RefChecks.scala diff --git a/sources/scala/tools/nsc/typechecker/SuperAccessors.scala b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala similarity index 100% rename from sources/scala/tools/nsc/typechecker/SuperAccessors.scala rename to src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala diff --git a/sources/scala/tools/nsc/typechecker/SyntheticMethods.scala b/src/compiler/scala/tools/nsc/typechecker/SyntheticMethods.scala similarity index 100% rename from sources/scala/tools/nsc/typechecker/SyntheticMethods.scala rename to src/compiler/scala/tools/nsc/typechecker/SyntheticMethods.scala diff --git a/sources/scala/tools/nsc/typechecker/TreeCheckers.scala b/src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala similarity index 100% rename from sources/scala/tools/nsc/typechecker/TreeCheckers.scala rename to src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala diff --git a/sources/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala similarity index 100% rename from sources/scala/tools/nsc/typechecker/Typers.scala rename to src/compiler/scala/tools/nsc/typechecker/Typers.scala diff --git a/sources/scala/tools/nsc/typechecker/Variances.scala b/src/compiler/scala/tools/nsc/typechecker/Variances.scala similarity index 100% rename from sources/scala/tools/nsc/typechecker/Variances.scala rename to src/compiler/scala/tools/nsc/typechecker/Variances.scala diff --git a/sources/scala/tools/nsc/util/CharArrayReader.scala b/src/compiler/scala/tools/nsc/util/CharArrayReader.scala similarity index 100% rename from sources/scala/tools/nsc/util/CharArrayReader.scala rename to src/compiler/scala/tools/nsc/util/CharArrayReader.scala diff --git a/sources/scala/tools/nsc/util/FreshNameCreator.scala b/src/compiler/scala/tools/nsc/util/FreshNameCreator.scala similarity index 100% rename from sources/scala/tools/nsc/util/FreshNameCreator.scala rename to src/compiler/scala/tools/nsc/util/FreshNameCreator.scala diff --git a/sources/scala/tools/nsc/util/HashSet.scala b/src/compiler/scala/tools/nsc/util/HashSet.scala similarity index 100% rename from sources/scala/tools/nsc/util/HashSet.scala rename to src/compiler/scala/tools/nsc/util/HashSet.scala diff --git a/sources/scala/tools/nsc/util/LinkedList.scala b/src/compiler/scala/tools/nsc/util/LinkedList.scala similarity index 100% rename from sources/scala/tools/nsc/util/LinkedList.scala rename to src/compiler/scala/tools/nsc/util/LinkedList.scala diff --git a/sources/scala/tools/nsc/util/ListBuffer.scala b/src/compiler/scala/tools/nsc/util/ListBuffer.scala similarity index 100% rename from sources/scala/tools/nsc/util/ListBuffer.scala rename to src/compiler/scala/tools/nsc/util/ListBuffer.scala diff --git a/sources/scala/tools/nsc/util/NameTransformer.scala b/src/compiler/scala/tools/nsc/util/NameTransformer.scala similarity index 100% rename from sources/scala/tools/nsc/util/NameTransformer.scala rename to src/compiler/scala/tools/nsc/util/NameTransformer.scala diff --git a/sources/scala/tools/nsc/util/Position.scala b/src/compiler/scala/tools/nsc/util/Position.scala similarity index 100% rename from sources/scala/tools/nsc/util/Position.scala rename to src/compiler/scala/tools/nsc/util/Position.scala diff --git a/sources/scala/tools/nsc/util/Set.scala b/src/compiler/scala/tools/nsc/util/Set.scala similarity index 100% rename from sources/scala/tools/nsc/util/Set.scala rename to src/compiler/scala/tools/nsc/util/Set.scala diff --git a/sources/scala/tools/nsc/util/ShowPickled.scala b/src/compiler/scala/tools/nsc/util/ShowPickled.scala similarity index 100% rename from sources/scala/tools/nsc/util/ShowPickled.scala rename to src/compiler/scala/tools/nsc/util/ShowPickled.scala diff --git a/sources/scala/tools/nsc/util/SourceFile.scala b/src/compiler/scala/tools/nsc/util/SourceFile.scala similarity index 100% rename from sources/scala/tools/nsc/util/SourceFile.scala rename to src/compiler/scala/tools/nsc/util/SourceFile.scala diff --git a/sources/scala/tools/nsc/util/Statistics.scala b/src/compiler/scala/tools/nsc/util/Statistics.scala similarity index 100% rename from sources/scala/tools/nsc/util/Statistics.scala rename to src/compiler/scala/tools/nsc/util/Statistics.scala diff --git a/sources/scala/tools/nsc/util/TreeSet.scala b/src/compiler/scala/tools/nsc/util/TreeSet.scala similarity index 100% rename from sources/scala/tools/nsc/util/TreeSet.scala rename to src/compiler/scala/tools/nsc/util/TreeSet.scala diff --git a/sources/scala/tools/util/AbstractFile.java b/src/compiler/scala/tools/util/AbstractFile.java similarity index 100% rename from sources/scala/tools/util/AbstractFile.java rename to src/compiler/scala/tools/util/AbstractFile.java diff --git a/sources/scala/tools/util/AbstractFileReader.java b/src/compiler/scala/tools/util/AbstractFileReader.java similarity index 100% rename from sources/scala/tools/util/AbstractFileReader.java rename to src/compiler/scala/tools/util/AbstractFileReader.java diff --git a/sources/scala/tools/util/AbstractReporter.java b/src/compiler/scala/tools/util/AbstractReporter.java similarity index 100% rename from sources/scala/tools/util/AbstractReporter.java rename to src/compiler/scala/tools/util/AbstractReporter.java diff --git a/sources/scala/tools/util/AbstractTimer.java b/src/compiler/scala/tools/util/AbstractTimer.java similarity index 100% rename from sources/scala/tools/util/AbstractTimer.java rename to src/compiler/scala/tools/util/AbstractTimer.java diff --git a/sources/scala/tools/util/ByteArrayFile.java b/src/compiler/scala/tools/util/ByteArrayFile.java similarity index 100% rename from sources/scala/tools/util/ByteArrayFile.java rename to src/compiler/scala/tools/util/ByteArrayFile.java diff --git a/sources/scala/tools/util/CharArrayFile.java b/src/compiler/scala/tools/util/CharArrayFile.java similarity index 100% rename from sources/scala/tools/util/CharArrayFile.java rename to src/compiler/scala/tools/util/CharArrayFile.java diff --git a/sources/scala/tools/util/ClassPath.java b/src/compiler/scala/tools/util/ClassPath.java similarity index 100% rename from sources/scala/tools/util/ClassPath.java rename to src/compiler/scala/tools/util/ClassPath.java diff --git a/sources/scala/tools/util/ConsoleReporter.java b/src/compiler/scala/tools/util/ConsoleReporter.java similarity index 100% rename from sources/scala/tools/util/ConsoleReporter.java rename to src/compiler/scala/tools/util/ConsoleReporter.java diff --git a/sources/scala/tools/util/DirectoryPath.java b/src/compiler/scala/tools/util/DirectoryPath.java similarity index 100% rename from sources/scala/tools/util/DirectoryPath.java rename to src/compiler/scala/tools/util/DirectoryPath.java diff --git a/sources/scala/tools/util/DummyTimer.java b/src/compiler/scala/tools/util/DummyTimer.java similarity index 100% rename from sources/scala/tools/util/DummyTimer.java rename to src/compiler/scala/tools/util/DummyTimer.java diff --git a/sources/scala/tools/util/EmptyIterator.java b/src/compiler/scala/tools/util/EmptyIterator.java similarity index 100% rename from sources/scala/tools/util/EmptyIterator.java rename to src/compiler/scala/tools/util/EmptyIterator.java diff --git a/sources/scala/tools/util/PlainFile.java b/src/compiler/scala/tools/util/PlainFile.java similarity index 100% rename from sources/scala/tools/util/PlainFile.java rename to src/compiler/scala/tools/util/PlainFile.java diff --git a/sources/scala/tools/util/Position.java b/src/compiler/scala/tools/util/Position.java similarity index 100% rename from sources/scala/tools/util/Position.java rename to src/compiler/scala/tools/util/Position.java diff --git a/sources/scala/tools/util/Reporter.java b/src/compiler/scala/tools/util/Reporter.java similarity index 100% rename from sources/scala/tools/util/Reporter.java rename to src/compiler/scala/tools/util/Reporter.java diff --git a/sources/scala/tools/util/ReporterTimer.java b/src/compiler/scala/tools/util/ReporterTimer.java similarity index 100% rename from sources/scala/tools/util/ReporterTimer.java rename to src/compiler/scala/tools/util/ReporterTimer.java diff --git a/sources/scala/tools/util/SourceFile.java b/src/compiler/scala/tools/util/SourceFile.java similarity index 100% rename from sources/scala/tools/util/SourceFile.java rename to src/compiler/scala/tools/util/SourceFile.java diff --git a/sources/scala/tools/util/SourceReader.java b/src/compiler/scala/tools/util/SourceReader.java similarity index 100% rename from sources/scala/tools/util/SourceReader.java rename to src/compiler/scala/tools/util/SourceReader.java diff --git a/sources/scala/tools/util/StringBufferWriter.java b/src/compiler/scala/tools/util/StringBufferWriter.java similarity index 100% rename from sources/scala/tools/util/StringBufferWriter.java rename to src/compiler/scala/tools/util/StringBufferWriter.java diff --git a/sources/scala/tools/util/Timer.java b/src/compiler/scala/tools/util/Timer.java similarity index 100% rename from sources/scala/tools/util/Timer.java rename to src/compiler/scala/tools/util/Timer.java diff --git a/sources/scala/tools/util/UTF8Codec.java b/src/compiler/scala/tools/util/UTF8Codec.java similarity index 100% rename from sources/scala/tools/util/UTF8Codec.java rename to src/compiler/scala/tools/util/UTF8Codec.java diff --git a/sources/scala/tools/util/VirtualDirectory.java b/src/compiler/scala/tools/util/VirtualDirectory.java similarity index 100% rename from sources/scala/tools/util/VirtualDirectory.java rename to src/compiler/scala/tools/util/VirtualDirectory.java diff --git a/sources/scala/tools/util/VirtualFile.java b/src/compiler/scala/tools/util/VirtualFile.java similarity index 100% rename from sources/scala/tools/util/VirtualFile.java rename to src/compiler/scala/tools/util/VirtualFile.java diff --git a/sources/scala/tools/util/ZipArchive.java b/src/compiler/scala/tools/util/ZipArchive.java similarity index 100% rename from sources/scala/tools/util/ZipArchive.java rename to src/compiler/scala/tools/util/ZipArchive.java diff --git a/sources/scala/tools/util/debug/AbortError.java b/src/compiler/scala/tools/util/debug/AbortError.java similarity index 100% rename from sources/scala/tools/util/debug/AbortError.java rename to src/compiler/scala/tools/util/debug/AbortError.java diff --git a/sources/scala/tools/util/debug/ArrayDebugger.java b/src/compiler/scala/tools/util/debug/ArrayDebugger.java similarity index 100% rename from sources/scala/tools/util/debug/ArrayDebugger.java rename to src/compiler/scala/tools/util/debug/ArrayDebugger.java diff --git a/sources/scala/tools/util/debug/Debug.java b/src/compiler/scala/tools/util/debug/Debug.java similarity index 100% rename from sources/scala/tools/util/debug/Debug.java rename to src/compiler/scala/tools/util/debug/Debug.java diff --git a/sources/scala/tools/util/debug/Debugger.java b/src/compiler/scala/tools/util/debug/Debugger.java similarity index 100% rename from sources/scala/tools/util/debug/Debugger.java rename to src/compiler/scala/tools/util/debug/Debugger.java diff --git a/sources/scala/tools/util/debug/ObjectDebugger.java b/src/compiler/scala/tools/util/debug/ObjectDebugger.java similarity index 100% rename from sources/scala/tools/util/debug/ObjectDebugger.java rename to src/compiler/scala/tools/util/debug/ObjectDebugger.java diff --git a/sources/scala/tools/util/debug/ThrowableDebugger.java b/src/compiler/scala/tools/util/debug/ThrowableDebugger.java similarity index 100% rename from sources/scala/tools/util/debug/ThrowableDebugger.java rename to src/compiler/scala/tools/util/debug/ThrowableDebugger.java diff --git a/sources/scala/tools/util/debug/ToStringDebugger.java b/src/compiler/scala/tools/util/debug/ToStringDebugger.java similarity index 100% rename from sources/scala/tools/util/debug/ToStringDebugger.java rename to src/compiler/scala/tools/util/debug/ToStringDebugger.java diff --git a/sources/bin/nscala-tool.win.tmpl b/src/exec/nscala-tool.win.tmpl similarity index 100% rename from sources/bin/nscala-tool.win.tmpl rename to src/exec/nscala-tool.win.tmpl diff --git a/sources/bin/nscala.unix.tmpl b/src/exec/nscala.unix.tmpl similarity index 81% rename from sources/bin/nscala.unix.tmpl rename to src/exec/nscala.unix.tmpl index 8288bde38..759450b7c 100644 --- a/sources/bin/nscala.unix.tmpl +++ b/src/exec/nscala.unix.tmpl @@ -1,7 +1,7 @@ #!/bin/bash ############################################################################## -# Copyright @COPYRIGHT@ +# Copyright @copyright@ # # This is free software; see the distribution for copying conditions. # There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A @@ -36,8 +36,8 @@ if [ -z "$SCRIPT" ]; then fi; _JAVACMD=java -_TOOLS_CPATH=@TOOLS_CPATH@ -_LIB_CPATH=@LIB_CPATH@ +_TOOLS_CPATH=@fjbg.jar@:@msil.jar@:@comp.path@:@lib.path@ +_LIB_CPATH=@lib.path@ # For Cygwin, switch paths to appropriate format before running java if $cygwin; then @@ -52,11 +52,10 @@ fi main= case "$SCRIPT" in - @SCALA@ ) ;; - @SCALAC@ ) main=scala.tools.nsc.Main;; - @SCALAI@ ) main=scala.tools.nsc.MainInterpreter;; - @SCALAP@ ) main=scala.tools.scalap.Main;; - @SCALATOK@ ) main=scala.tools.nsc.MainTokenMetric;; + @scala.exec.name@ ) ;; + @scalac.exec.name@ ) main=scala.tools.nsc.Main;; + @scalai.exec.name@ ) main=scala.tools.nsc.MainInterpreter;; + @scalatok.exec.name@ ) main=scala.tools.nsc.MainTokenMetric;; * ) abort "Don't know what to do for $SCRIPT.";; esac; @@ -64,7 +63,7 @@ if [ -z "$main" ]; then for arg in "" "$@"; do [ -z "$arg" ] && continue; if [ "$arg" = "-version" ]; then - echo "$SCRIPT @VERSION@ -- @COPYRIGHT@"; + echo "$SCRIPT @version@ -- @copyright@"; exit 0 fi done; @@ -75,7 +74,7 @@ else $_JAVACMD \ -Xms16M -Xmx256M \ -Dscala.product="$SCRIPT" \ - -Dscala.version="@VERSION@" \ + -Dscala.version="@version@" \ -Dscala.home="$PREFIX" \ -cp "$_TOOLS_CPATH" \ $main -sourcepath "$_LIB_CPATH" "$@" diff --git a/sources/bin/nscala.win.tmpl b/src/exec/nscala.win.tmpl similarity index 100% rename from sources/bin/nscala.win.tmpl rename to src/exec/nscala.win.tmpl diff --git a/sources/scala/All$.java b/src/library/scala/All$.java similarity index 100% rename from sources/scala/All$.java rename to src/library/scala/All$.java diff --git a/sources/scala/AllRef$.java b/src/library/scala/AllRef$.java similarity index 100% rename from sources/scala/AllRef$.java rename to src/library/scala/AllRef$.java diff --git a/sources/scala/AnyVal.cs b/src/library/scala/AnyVal.cs similarity index 89% rename from sources/scala/AnyVal.cs rename to src/library/scala/AnyVal.cs index 2178416e4..13cf2f3e2 100644 --- a/sources/scala/AnyVal.cs +++ b/src/library/scala/AnyVal.cs @@ -6,7 +6,7 @@ ** |/ ** \* */ -// $Id$ +// $Id:AnyVal.cs 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ using scala.runtime; diff --git a/sources/scala/AnyVal.java b/src/library/scala/AnyVal.java similarity index 100% rename from sources/scala/AnyVal.java rename to src/library/scala/AnyVal.java diff --git a/sources/scala/Application.scala b/src/library/scala/Application.scala similarity index 95% rename from sources/scala/Application.scala rename to src/library/scala/Application.scala index 80fc41acb..b536c8a31 100644 --- a/sources/scala/Application.scala +++ b/src/library/scala/Application.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:Application.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/newsources/scala/Array.scala b/src/library/scala/Array.scala similarity index 100% rename from newsources/scala/Array.scala rename to src/library/scala/Array.scala diff --git a/sources/scala/Attribute.scala b/src/library/scala/Attribute.scala similarity index 87% rename from sources/scala/Attribute.scala rename to src/library/scala/Attribute.scala index 999e5fdce..9cb11143f 100644 --- a/sources/scala/Attribute.scala +++ b/src/library/scala/Attribute.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:Attribute.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Boolean.cs b/src/library/scala/Boolean.cs similarity index 95% rename from sources/scala/Boolean.cs rename to src/library/scala/Boolean.cs index add1f882f..73e72935e 100644 --- a/sources/scala/Boolean.cs +++ b/src/library/scala/Boolean.cs @@ -6,7 +6,7 @@ ** |/ ** \* */ -// $Id$ +// $Id:Boolean.cs 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ using System; using scala.runtime; diff --git a/sources/scala/Boolean.java b/src/library/scala/Boolean.java similarity index 100% rename from sources/scala/Boolean.java rename to src/library/scala/Boolean.java diff --git a/sources/scala/BufferedIterator.scala b/src/library/scala/BufferedIterator.scala similarity index 90% rename from sources/scala/BufferedIterator.scala rename to src/library/scala/BufferedIterator.scala index e17093e1d..6ee72ee78 100644 --- a/sources/scala/BufferedIterator.scala +++ b/src/library/scala/BufferedIterator.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:BufferedIterator.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Byte.cs b/src/library/scala/Byte.cs similarity index 98% rename from sources/scala/Byte.cs rename to src/library/scala/Byte.cs index 4fd649345..a8faa7080 100644 --- a/sources/scala/Byte.cs +++ b/src/library/scala/Byte.cs @@ -6,7 +6,7 @@ ** |/ ** \* */ -// $Id$ +// $Id:Byte.cs 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ using System; using scala.runtime; diff --git a/sources/scala/Byte.java b/src/library/scala/Byte.java similarity index 100% rename from sources/scala/Byte.java rename to src/library/scala/Byte.java diff --git a/sources/scala/CaseClass.scala b/src/library/scala/CaseClass.scala similarity index 92% rename from sources/scala/CaseClass.scala rename to src/library/scala/CaseClass.scala index 0180efe26..07b766ede 100644 --- a/sources/scala/CaseClass.scala +++ b/src/library/scala/CaseClass.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:CaseClass.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Cell.scala b/src/library/scala/Cell.scala similarity index 91% rename from sources/scala/Cell.scala rename to src/library/scala/Cell.scala index 8a5146a3a..77ee7015c 100644 --- a/sources/scala/Cell.scala +++ b/src/library/scala/Cell.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:Cell.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Char.cs b/src/library/scala/Char.cs similarity index 98% rename from sources/scala/Char.cs rename to src/library/scala/Char.cs index b3e28a454..3afde58df 100644 --- a/sources/scala/Char.cs +++ b/src/library/scala/Char.cs @@ -6,7 +6,7 @@ ** |/ ** \* */ -// $Id$ +// $Id:Char.cs 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ using System; using scala.runtime; diff --git a/sources/scala/Char.java b/src/library/scala/Char.java similarity index 100% rename from sources/scala/Char.java rename to src/library/scala/Char.java diff --git a/sources/scala/Console.scala b/src/library/scala/Console.scala similarity index 99% rename from sources/scala/Console.scala rename to src/library/scala/Console.scala index f9ec8fc49..f7175d1e1 100644 --- a/sources/scala/Console.scala +++ b/src/library/scala/Console.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:Console.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Double.cs b/src/library/scala/Double.cs similarity index 96% rename from sources/scala/Double.cs rename to src/library/scala/Double.cs index 59da22040..30b9293c4 100644 --- a/sources/scala/Double.cs +++ b/src/library/scala/Double.cs @@ -6,7 +6,7 @@ ** |/ ** \* */ -// $Id$ +// $Id:Double.cs 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ using System; using scala.runtime; diff --git a/sources/scala/Double.java b/src/library/scala/Double.java similarity index 100% rename from sources/scala/Double.java rename to src/library/scala/Double.java diff --git a/sources/scala/Enumeration.scala b/src/library/scala/Enumeration.scala similarity index 98% rename from sources/scala/Enumeration.scala rename to src/library/scala/Enumeration.scala index 81d6107f3..9a8fa14af 100644 --- a/sources/scala/Enumeration.scala +++ b/src/library/scala/Enumeration.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:Enumeration.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Float.cs b/src/library/scala/Float.cs similarity index 97% rename from sources/scala/Float.cs rename to src/library/scala/Float.cs index 13832f3f1..5a3a162de 100644 --- a/sources/scala/Float.cs +++ b/src/library/scala/Float.cs @@ -6,7 +6,7 @@ ** |/ ** \* */ -// $Id$ +// $Id:Float.cs 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ using System; using scala.runtime; diff --git a/sources/scala/Float.java b/src/library/scala/Float.java similarity index 100% rename from sources/scala/Float.java rename to src/library/scala/Float.java diff --git a/sources/scala/Function0.scala b/src/library/scala/Function0.scala similarity index 100% rename from sources/scala/Function0.scala rename to src/library/scala/Function0.scala diff --git a/sources/scala/Function1.scala b/src/library/scala/Function1.scala similarity index 100% rename from sources/scala/Function1.scala rename to src/library/scala/Function1.scala diff --git a/sources/scala/Function2.scala b/src/library/scala/Function2.scala similarity index 100% rename from sources/scala/Function2.scala rename to src/library/scala/Function2.scala diff --git a/sources/scala/Function3.scala b/src/library/scala/Function3.scala similarity index 100% rename from sources/scala/Function3.scala rename to src/library/scala/Function3.scala diff --git a/sources/scala/Function4.scala b/src/library/scala/Function4.scala similarity index 100% rename from sources/scala/Function4.scala rename to src/library/scala/Function4.scala diff --git a/sources/scala/Function5.scala b/src/library/scala/Function5.scala similarity index 100% rename from sources/scala/Function5.scala rename to src/library/scala/Function5.scala diff --git a/sources/scala/Function6.scala b/src/library/scala/Function6.scala similarity index 100% rename from sources/scala/Function6.scala rename to src/library/scala/Function6.scala diff --git a/sources/scala/Function7.scala b/src/library/scala/Function7.scala similarity index 100% rename from sources/scala/Function7.scala rename to src/library/scala/Function7.scala diff --git a/sources/scala/Function8.scala b/src/library/scala/Function8.scala similarity index 100% rename from sources/scala/Function8.scala rename to src/library/scala/Function8.scala diff --git a/sources/scala/Function9.scala b/src/library/scala/Function9.scala similarity index 100% rename from sources/scala/Function9.scala rename to src/library/scala/Function9.scala diff --git a/sources/scala/Int.cs b/src/library/scala/Int.cs similarity index 98% rename from sources/scala/Int.cs rename to src/library/scala/Int.cs index 001ee900d..1c909df50 100644 --- a/sources/scala/Int.cs +++ b/src/library/scala/Int.cs @@ -6,7 +6,7 @@ ** |/ ** \* */ -// $Id$ +// $Id:Int.cs 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ using System; using scala.runtime; diff --git a/sources/scala/Int.java b/src/library/scala/Int.java similarity index 100% rename from sources/scala/Int.java rename to src/library/scala/Int.java diff --git a/sources/scala/Iterable.scala b/src/library/scala/Iterable.scala similarity index 98% rename from sources/scala/Iterable.scala rename to src/library/scala/Iterable.scala index dead34f3c..0621b080b 100644 --- a/sources/scala/Iterable.scala +++ b/src/library/scala/Iterable.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:Iterable.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/IterableProxy.scala b/src/library/scala/IterableProxy.scala similarity index 97% rename from sources/scala/IterableProxy.scala rename to src/library/scala/IterableProxy.scala index 2d238f684..07dbccb75 100644 --- a/sources/scala/IterableProxy.scala +++ b/src/library/scala/IterableProxy.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:IterableProxy.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Iterator.scala b/src/library/scala/Iterator.scala similarity index 99% rename from sources/scala/Iterator.scala rename to src/library/scala/Iterator.scala index f9fbbad0c..349bd4375 100644 --- a/sources/scala/Iterator.scala +++ b/src/library/scala/Iterator.scala @@ -6,7 +6,7 @@ ** |/ ** \* */ -// $Id$ +// $Id:Iterator.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ package scala; diff --git a/sources/scala/List.scala b/src/library/scala/List.scala similarity index 99% rename from sources/scala/List.scala rename to src/library/scala/List.scala index d3b3be565..1271c4980 100644 --- a/sources/scala/List.scala +++ b/src/library/scala/List.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:List.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Long.cs b/src/library/scala/Long.cs similarity index 98% rename from sources/scala/Long.cs rename to src/library/scala/Long.cs index 01995f7d0..cf147b04b 100644 --- a/sources/scala/Long.cs +++ b/src/library/scala/Long.cs @@ -6,7 +6,7 @@ ** |/ ** \* */ -// $Id$ +// $Id:Long.cs 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ using System; using scala.runtime; diff --git a/sources/scala/Long.java b/src/library/scala/Long.java similarity index 100% rename from sources/scala/Long.java rename to src/library/scala/Long.java diff --git a/newsources/scala/MatchError.scala b/src/library/scala/MatchError.scala similarity index 100% rename from newsources/scala/MatchError.scala rename to src/library/scala/MatchError.scala diff --git a/sources/scala/None.scala b/src/library/scala/None.scala similarity index 89% rename from sources/scala/None.scala rename to src/library/scala/None.scala index 9905889ac..337426b1e 100644 --- a/sources/scala/None.scala +++ b/src/library/scala/None.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:None.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Option.scala b/src/library/scala/Option.scala similarity index 95% rename from sources/scala/Option.scala rename to src/library/scala/Option.scala index 7d9dbce45..c19748c87 100644 --- a/sources/scala/Option.scala +++ b/src/library/scala/Option.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:Option.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Ordered.scala b/src/library/scala/Ordered.scala similarity index 94% rename from sources/scala/Ordered.scala rename to src/library/scala/Ordered.scala index adef57ad2..e12d3aa2b 100644 --- a/sources/scala/Ordered.scala +++ b/src/library/scala/Ordered.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:Ordered.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/PartialFunction.scala b/src/library/scala/PartialFunction.scala similarity index 92% rename from sources/scala/PartialFunction.scala rename to src/library/scala/PartialFunction.scala index 470f9c571..9bea5386c 100644 --- a/sources/scala/PartialFunction.scala +++ b/src/library/scala/PartialFunction.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:PartialFunction.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/PartiallyOrdered.scala b/src/library/scala/PartiallyOrdered.scala similarity index 95% rename from sources/scala/PartiallyOrdered.scala rename to src/library/scala/PartiallyOrdered.scala index 04c8afc50..b03e00e4e 100644 --- a/sources/scala/PartiallyOrdered.scala +++ b/src/library/scala/PartiallyOrdered.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:PartiallyOrdered.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Predef.scala b/src/library/scala/Predef.scala similarity index 99% rename from sources/scala/Predef.scala rename to src/library/scala/Predef.scala index 25c45b78a..91139f7dd 100644 --- a/sources/scala/Predef.scala +++ b/src/library/scala/Predef.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:Predef.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Proxy.scala b/src/library/scala/Proxy.scala similarity index 92% rename from sources/scala/Proxy.scala rename to src/library/scala/Proxy.scala index 5129f0eb0..5bf65c2ed 100644 --- a/sources/scala/Proxy.scala +++ b/src/library/scala/Proxy.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:Proxy.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Ref.cs b/src/library/scala/Ref.cs similarity index 91% rename from sources/scala/Ref.cs rename to src/library/scala/Ref.cs index 3a10a7c64..660b07321 100644 --- a/sources/scala/Ref.cs +++ b/src/library/scala/Ref.cs @@ -7,7 +7,7 @@ \* */ // $OldId: Ref.java,v 1.2 2002/03/12 13:16:04 zenger Exp $ -// $Id$ +// $Id:Ref.cs 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ using System; using scala.runtime; diff --git a/sources/scala/Ref.java b/src/library/scala/Ref.java similarity index 100% rename from sources/scala/Ref.java rename to src/library/scala/Ref.java diff --git a/newsources/scala/ScalaObject.scala b/src/library/scala/ScalaObject.scala similarity index 100% rename from newsources/scala/ScalaObject.scala rename to src/library/scala/ScalaObject.scala diff --git a/sources/scala/Seq.scala b/src/library/scala/Seq.scala similarity index 98% rename from sources/scala/Seq.scala rename to src/library/scala/Seq.scala index aa24f67a1..67f136b45 100644 --- a/sources/scala/Seq.scala +++ b/src/library/scala/Seq.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:Seq.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/SeqProxy.scala b/src/library/scala/SeqProxy.scala similarity index 97% rename from sources/scala/SeqProxy.scala rename to src/library/scala/SeqProxy.scala index b529f3cf9..b8ac98b96 100644 --- a/sources/scala/SeqProxy.scala +++ b/src/library/scala/SeqProxy.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:SeqProxy.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/SerialVersionUID.scala b/src/library/scala/SerialVersionUID.scala similarity index 85% rename from sources/scala/SerialVersionUID.scala rename to src/library/scala/SerialVersionUID.scala index c86da7b66..9b42c0941 100644 --- a/sources/scala/SerialVersionUID.scala +++ b/src/library/scala/SerialVersionUID.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:SerialVersionUID.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ */ package scala; diff --git a/sources/scala/Short.cs b/src/library/scala/Short.cs similarity index 98% rename from sources/scala/Short.cs rename to src/library/scala/Short.cs index 0e03090d5..5503b9360 100644 --- a/sources/scala/Short.cs +++ b/src/library/scala/Short.cs @@ -6,7 +6,7 @@ ** |/ ** \* */ -// $Id$ +// $Id:Short.cs 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ using System; using scala.runtime; diff --git a/sources/scala/Short.java b/src/library/scala/Short.java similarity index 100% rename from sources/scala/Short.java rename to src/library/scala/Short.java diff --git a/sources/scala/Some.scala b/src/library/scala/Some.scala similarity index 90% rename from sources/scala/Some.scala rename to src/library/scala/Some.scala index 4f0bd7ea3..4d5d210ab 100644 --- a/sources/scala/Some.scala +++ b/src/library/scala/Some.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:Some.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Stream.scala b/src/library/scala/Stream.scala similarity index 98% rename from sources/scala/Stream.scala rename to src/library/scala/Stream.scala index 546f6ef5b..0097aaae1 100644 --- a/sources/scala/Stream.scala +++ b/src/library/scala/Stream.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:Stream.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Symbol.scala b/src/library/scala/Symbol.scala similarity index 92% rename from sources/scala/Symbol.scala rename to src/library/scala/Symbol.scala index e6560370c..790dbb5c5 100644 --- a/sources/scala/Symbol.scala +++ b/src/library/scala/Symbol.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:Symbol.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/Tuple1.scala b/src/library/scala/Tuple1.scala similarity index 100% rename from sources/scala/Tuple1.scala rename to src/library/scala/Tuple1.scala diff --git a/sources/scala/Tuple2.scala b/src/library/scala/Tuple2.scala similarity index 100% rename from sources/scala/Tuple2.scala rename to src/library/scala/Tuple2.scala diff --git a/sources/scala/Tuple3.scala b/src/library/scala/Tuple3.scala similarity index 100% rename from sources/scala/Tuple3.scala rename to src/library/scala/Tuple3.scala diff --git a/sources/scala/Tuple4.scala b/src/library/scala/Tuple4.scala similarity index 100% rename from sources/scala/Tuple4.scala rename to src/library/scala/Tuple4.scala diff --git a/sources/scala/Tuple5.scala b/src/library/scala/Tuple5.scala similarity index 100% rename from sources/scala/Tuple5.scala rename to src/library/scala/Tuple5.scala diff --git a/sources/scala/Tuple6.scala b/src/library/scala/Tuple6.scala similarity index 100% rename from sources/scala/Tuple6.scala rename to src/library/scala/Tuple6.scala diff --git a/sources/scala/Tuple7.scala b/src/library/scala/Tuple7.scala similarity index 100% rename from sources/scala/Tuple7.scala rename to src/library/scala/Tuple7.scala diff --git a/sources/scala/Tuple8.scala b/src/library/scala/Tuple8.scala similarity index 100% rename from sources/scala/Tuple8.scala rename to src/library/scala/Tuple8.scala diff --git a/sources/scala/Tuple9.scala b/src/library/scala/Tuple9.scala similarity index 100% rename from sources/scala/Tuple9.scala rename to src/library/scala/Tuple9.scala diff --git a/sources/scala/Unit.cs b/src/library/scala/Unit.cs similarity index 93% rename from sources/scala/Unit.cs rename to src/library/scala/Unit.cs index 0acb8db74..44fd1aa3c 100644 --- a/sources/scala/Unit.cs +++ b/src/library/scala/Unit.cs @@ -6,7 +6,7 @@ ** |/ ** \* */ -// $Id$ +// $Id:Unit.cs 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ using System; using scala.runtime; diff --git a/sources/scala/Unit.java b/src/library/scala/Unit.java similarity index 100% rename from sources/scala/Unit.java rename to src/library/scala/Unit.java diff --git a/sources/scala/_trait_.scala b/src/library/scala/_trait_.scala similarity index 90% rename from sources/scala/_trait_.scala rename to src/library/scala/_trait_.scala index a9a0e3f53..41c6d56d7 100644 --- a/sources/scala/_trait_.scala +++ b/src/library/scala/_trait_.scala @@ -6,7 +6,7 @@ ** |/ ** */ -// $Id$ +// $Id:_trait_.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ package scala; diff --git a/sources/scala/cloneable.scala b/src/library/scala/cloneable.scala similarity index 85% rename from sources/scala/cloneable.scala rename to src/library/scala/cloneable.scala index 8369799be..4067a3d73 100644 --- a/sources/scala/cloneable.scala +++ b/src/library/scala/cloneable.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:cloneable.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ */ package scala; diff --git a/sources/scala/collection/BitSet.scala b/src/library/scala/collection/BitSet.scala similarity index 100% rename from sources/scala/collection/BitSet.scala rename to src/library/scala/collection/BitSet.scala diff --git a/sources/scala/collection/Map.scala b/src/library/scala/collection/Map.scala similarity index 100% rename from sources/scala/collection/Map.scala rename to src/library/scala/collection/Map.scala diff --git a/sources/scala/collection/MapProxy.scala b/src/library/scala/collection/MapProxy.scala similarity index 100% rename from sources/scala/collection/MapProxy.scala rename to src/library/scala/collection/MapProxy.scala diff --git a/sources/scala/collection/Set.scala b/src/library/scala/collection/Set.scala similarity index 100% rename from sources/scala/collection/Set.scala rename to src/library/scala/collection/Set.scala diff --git a/sources/scala/collection/SetProxy.scala b/src/library/scala/collection/SetProxy.scala similarity index 100% rename from sources/scala/collection/SetProxy.scala rename to src/library/scala/collection/SetProxy.scala diff --git a/sources/scala/collection/immutable/BitSet.scala b/src/library/scala/collection/immutable/BitSet.scala similarity index 100% rename from sources/scala/collection/immutable/BitSet.scala rename to src/library/scala/collection/immutable/BitSet.scala diff --git a/sources/scala/collection/immutable/ListMap.scala b/src/library/scala/collection/immutable/ListMap.scala similarity index 100% rename from sources/scala/collection/immutable/ListMap.scala rename to src/library/scala/collection/immutable/ListMap.scala diff --git a/sources/scala/collection/immutable/ListSet.scala b/src/library/scala/collection/immutable/ListSet.scala similarity index 100% rename from sources/scala/collection/immutable/ListSet.scala rename to src/library/scala/collection/immutable/ListSet.scala diff --git a/sources/scala/collection/immutable/Map.scala b/src/library/scala/collection/immutable/Map.scala similarity index 100% rename from sources/scala/collection/immutable/Map.scala rename to src/library/scala/collection/immutable/Map.scala diff --git a/sources/scala/collection/immutable/Queue.scala b/src/library/scala/collection/immutable/Queue.scala similarity index 100% rename from sources/scala/collection/immutable/Queue.scala rename to src/library/scala/collection/immutable/Queue.scala diff --git a/sources/scala/collection/immutable/Set.scala b/src/library/scala/collection/immutable/Set.scala similarity index 100% rename from sources/scala/collection/immutable/Set.scala rename to src/library/scala/collection/immutable/Set.scala diff --git a/sources/scala/collection/immutable/Stack.scala b/src/library/scala/collection/immutable/Stack.scala similarity index 100% rename from sources/scala/collection/immutable/Stack.scala rename to src/library/scala/collection/immutable/Stack.scala diff --git a/sources/scala/collection/immutable/Tree.scala b/src/library/scala/collection/immutable/Tree.scala similarity index 100% rename from sources/scala/collection/immutable/Tree.scala rename to src/library/scala/collection/immutable/Tree.scala diff --git a/sources/scala/collection/immutable/TreeMap.scala b/src/library/scala/collection/immutable/TreeMap.scala similarity index 100% rename from sources/scala/collection/immutable/TreeMap.scala rename to src/library/scala/collection/immutable/TreeMap.scala diff --git a/sources/scala/collection/immutable/TreeSet.scala b/src/library/scala/collection/immutable/TreeSet.scala similarity index 100% rename from sources/scala/collection/immutable/TreeSet.scala rename to src/library/scala/collection/immutable/TreeSet.scala diff --git a/sources/scala/collection/mutable/ArrayBuffer.scala b/src/library/scala/collection/mutable/ArrayBuffer.scala similarity index 100% rename from sources/scala/collection/mutable/ArrayBuffer.scala rename to src/library/scala/collection/mutable/ArrayBuffer.scala diff --git a/sources/scala/collection/mutable/BitSet.scala b/src/library/scala/collection/mutable/BitSet.scala similarity index 100% rename from sources/scala/collection/mutable/BitSet.scala rename to src/library/scala/collection/mutable/BitSet.scala diff --git a/sources/scala/collection/mutable/Buffer.scala b/src/library/scala/collection/mutable/Buffer.scala similarity index 100% rename from sources/scala/collection/mutable/Buffer.scala rename to src/library/scala/collection/mutable/Buffer.scala diff --git a/sources/scala/collection/mutable/BufferProxy.scala b/src/library/scala/collection/mutable/BufferProxy.scala similarity index 100% rename from sources/scala/collection/mutable/BufferProxy.scala rename to src/library/scala/collection/mutable/BufferProxy.scala diff --git a/sources/scala/collection/mutable/DefaultMapModel.scala b/src/library/scala/collection/mutable/DefaultMapModel.scala similarity index 100% rename from sources/scala/collection/mutable/DefaultMapModel.scala rename to src/library/scala/collection/mutable/DefaultMapModel.scala diff --git a/sources/scala/collection/mutable/DoubleLinkedList.scala b/src/library/scala/collection/mutable/DoubleLinkedList.scala similarity index 100% rename from sources/scala/collection/mutable/DoubleLinkedList.scala rename to src/library/scala/collection/mutable/DoubleLinkedList.scala diff --git a/sources/scala/collection/mutable/HashMap.scala b/src/library/scala/collection/mutable/HashMap.scala similarity index 100% rename from sources/scala/collection/mutable/HashMap.scala rename to src/library/scala/collection/mutable/HashMap.scala diff --git a/sources/scala/collection/mutable/HashSet.scala b/src/library/scala/collection/mutable/HashSet.scala similarity index 100% rename from sources/scala/collection/mutable/HashSet.scala rename to src/library/scala/collection/mutable/HashSet.scala diff --git a/sources/scala/collection/mutable/HashTable.scala b/src/library/scala/collection/mutable/HashTable.scala similarity index 100% rename from sources/scala/collection/mutable/HashTable.scala rename to src/library/scala/collection/mutable/HashTable.scala diff --git a/sources/scala/collection/mutable/History.scala b/src/library/scala/collection/mutable/History.scala similarity index 100% rename from sources/scala/collection/mutable/History.scala rename to src/library/scala/collection/mutable/History.scala diff --git a/sources/scala/collection/mutable/ImmutableMapAdaptor.scala b/src/library/scala/collection/mutable/ImmutableMapAdaptor.scala similarity index 100% rename from sources/scala/collection/mutable/ImmutableMapAdaptor.scala rename to src/library/scala/collection/mutable/ImmutableMapAdaptor.scala diff --git a/sources/scala/collection/mutable/ImmutableSetAdaptor.scala b/src/library/scala/collection/mutable/ImmutableSetAdaptor.scala similarity index 100% rename from sources/scala/collection/mutable/ImmutableSetAdaptor.scala rename to src/library/scala/collection/mutable/ImmutableSetAdaptor.scala diff --git a/sources/scala/collection/mutable/JavaMapAdaptor.scala b/src/library/scala/collection/mutable/JavaMapAdaptor.scala similarity index 100% rename from sources/scala/collection/mutable/JavaMapAdaptor.scala rename to src/library/scala/collection/mutable/JavaMapAdaptor.scala diff --git a/sources/scala/collection/mutable/JavaSetAdaptor.scala b/src/library/scala/collection/mutable/JavaSetAdaptor.scala similarity index 100% rename from sources/scala/collection/mutable/JavaSetAdaptor.scala rename to src/library/scala/collection/mutable/JavaSetAdaptor.scala diff --git a/sources/scala/collection/mutable/LinkedList.scala b/src/library/scala/collection/mutable/LinkedList.scala similarity index 100% rename from sources/scala/collection/mutable/LinkedList.scala rename to src/library/scala/collection/mutable/LinkedList.scala diff --git a/sources/scala/collection/mutable/ListBuffer.scala b/src/library/scala/collection/mutable/ListBuffer.scala similarity index 100% rename from sources/scala/collection/mutable/ListBuffer.scala rename to src/library/scala/collection/mutable/ListBuffer.scala diff --git a/sources/scala/collection/mutable/Location.scala b/src/library/scala/collection/mutable/Location.scala similarity index 100% rename from sources/scala/collection/mutable/Location.scala rename to src/library/scala/collection/mutable/Location.scala diff --git a/sources/scala/collection/mutable/Map.scala b/src/library/scala/collection/mutable/Map.scala similarity index 100% rename from sources/scala/collection/mutable/Map.scala rename to src/library/scala/collection/mutable/Map.scala diff --git a/sources/scala/collection/mutable/MapProxy.scala b/src/library/scala/collection/mutable/MapProxy.scala similarity index 100% rename from sources/scala/collection/mutable/MapProxy.scala rename to src/library/scala/collection/mutable/MapProxy.scala diff --git a/sources/scala/collection/mutable/Message.scala b/src/library/scala/collection/mutable/Message.scala similarity index 100% rename from sources/scala/collection/mutable/Message.scala rename to src/library/scala/collection/mutable/Message.scala diff --git a/sources/scala/collection/mutable/MultiMap.scala b/src/library/scala/collection/mutable/MultiMap.scala similarity index 100% rename from sources/scala/collection/mutable/MultiMap.scala rename to src/library/scala/collection/mutable/MultiMap.scala diff --git a/sources/scala/collection/mutable/MutableList.scala b/src/library/scala/collection/mutable/MutableList.scala similarity index 100% rename from sources/scala/collection/mutable/MutableList.scala rename to src/library/scala/collection/mutable/MutableList.scala diff --git a/sources/scala/collection/mutable/ObservableBuffer.scala b/src/library/scala/collection/mutable/ObservableBuffer.scala similarity index 100% rename from sources/scala/collection/mutable/ObservableBuffer.scala rename to src/library/scala/collection/mutable/ObservableBuffer.scala diff --git a/sources/scala/collection/mutable/ObservableMap.scala b/src/library/scala/collection/mutable/ObservableMap.scala similarity index 100% rename from sources/scala/collection/mutable/ObservableMap.scala rename to src/library/scala/collection/mutable/ObservableMap.scala diff --git a/sources/scala/collection/mutable/ObservableSet.scala b/src/library/scala/collection/mutable/ObservableSet.scala similarity index 100% rename from sources/scala/collection/mutable/ObservableSet.scala rename to src/library/scala/collection/mutable/ObservableSet.scala diff --git a/sources/scala/collection/mutable/PriorityQueue.scala b/src/library/scala/collection/mutable/PriorityQueue.scala similarity index 100% rename from sources/scala/collection/mutable/PriorityQueue.scala rename to src/library/scala/collection/mutable/PriorityQueue.scala diff --git a/sources/scala/collection/mutable/PriorityQueueProxy.scala b/src/library/scala/collection/mutable/PriorityQueueProxy.scala similarity index 100% rename from sources/scala/collection/mutable/PriorityQueueProxy.scala rename to src/library/scala/collection/mutable/PriorityQueueProxy.scala diff --git a/sources/scala/collection/mutable/Publisher.scala b/src/library/scala/collection/mutable/Publisher.scala similarity index 100% rename from sources/scala/collection/mutable/Publisher.scala rename to src/library/scala/collection/mutable/Publisher.scala diff --git a/sources/scala/collection/mutable/Queue.scala b/src/library/scala/collection/mutable/Queue.scala similarity index 100% rename from sources/scala/collection/mutable/Queue.scala rename to src/library/scala/collection/mutable/Queue.scala diff --git a/sources/scala/collection/mutable/QueueProxy.scala b/src/library/scala/collection/mutable/QueueProxy.scala similarity index 100% rename from sources/scala/collection/mutable/QueueProxy.scala rename to src/library/scala/collection/mutable/QueueProxy.scala diff --git a/sources/scala/collection/mutable/ResizableArray.scala b/src/library/scala/collection/mutable/ResizableArray.scala similarity index 100% rename from sources/scala/collection/mutable/ResizableArray.scala rename to src/library/scala/collection/mutable/ResizableArray.scala diff --git a/sources/scala/collection/mutable/RevertableHistory.scala b/src/library/scala/collection/mutable/RevertableHistory.scala similarity index 100% rename from sources/scala/collection/mutable/RevertableHistory.scala rename to src/library/scala/collection/mutable/RevertableHistory.scala diff --git a/sources/scala/collection/mutable/Scriptable.scala b/src/library/scala/collection/mutable/Scriptable.scala similarity index 100% rename from sources/scala/collection/mutable/Scriptable.scala rename to src/library/scala/collection/mutable/Scriptable.scala diff --git a/sources/scala/collection/mutable/Set.scala b/src/library/scala/collection/mutable/Set.scala similarity index 100% rename from sources/scala/collection/mutable/Set.scala rename to src/library/scala/collection/mutable/Set.scala diff --git a/sources/scala/collection/mutable/SetProxy.scala b/src/library/scala/collection/mutable/SetProxy.scala similarity index 100% rename from sources/scala/collection/mutable/SetProxy.scala rename to src/library/scala/collection/mutable/SetProxy.scala diff --git a/sources/scala/collection/mutable/SingleLinkedList.scala b/src/library/scala/collection/mutable/SingleLinkedList.scala similarity index 100% rename from sources/scala/collection/mutable/SingleLinkedList.scala rename to src/library/scala/collection/mutable/SingleLinkedList.scala diff --git a/sources/scala/collection/mutable/Stack.scala b/src/library/scala/collection/mutable/Stack.scala similarity index 100% rename from sources/scala/collection/mutable/Stack.scala rename to src/library/scala/collection/mutable/Stack.scala diff --git a/sources/scala/collection/mutable/StackProxy.scala b/src/library/scala/collection/mutable/StackProxy.scala similarity index 100% rename from sources/scala/collection/mutable/StackProxy.scala rename to src/library/scala/collection/mutable/StackProxy.scala diff --git a/sources/scala/collection/mutable/Subscriber.scala b/src/library/scala/collection/mutable/Subscriber.scala similarity index 100% rename from sources/scala/collection/mutable/Subscriber.scala rename to src/library/scala/collection/mutable/Subscriber.scala diff --git a/sources/scala/collection/mutable/SynchronizedBuffer.scala b/src/library/scala/collection/mutable/SynchronizedBuffer.scala similarity index 100% rename from sources/scala/collection/mutable/SynchronizedBuffer.scala rename to src/library/scala/collection/mutable/SynchronizedBuffer.scala diff --git a/sources/scala/collection/mutable/SynchronizedMap.scala b/src/library/scala/collection/mutable/SynchronizedMap.scala similarity index 100% rename from sources/scala/collection/mutable/SynchronizedMap.scala rename to src/library/scala/collection/mutable/SynchronizedMap.scala diff --git a/sources/scala/collection/mutable/SynchronizedPriorityQueue.scala b/src/library/scala/collection/mutable/SynchronizedPriorityQueue.scala similarity index 100% rename from sources/scala/collection/mutable/SynchronizedPriorityQueue.scala rename to src/library/scala/collection/mutable/SynchronizedPriorityQueue.scala diff --git a/sources/scala/collection/mutable/SynchronizedQueue.scala b/src/library/scala/collection/mutable/SynchronizedQueue.scala similarity index 100% rename from sources/scala/collection/mutable/SynchronizedQueue.scala rename to src/library/scala/collection/mutable/SynchronizedQueue.scala diff --git a/sources/scala/collection/mutable/SynchronizedSet.scala b/src/library/scala/collection/mutable/SynchronizedSet.scala similarity index 100% rename from sources/scala/collection/mutable/SynchronizedSet.scala rename to src/library/scala/collection/mutable/SynchronizedSet.scala diff --git a/sources/scala/collection/mutable/SynchronizedStack.scala b/src/library/scala/collection/mutable/SynchronizedStack.scala similarity index 100% rename from sources/scala/collection/mutable/SynchronizedStack.scala rename to src/library/scala/collection/mutable/SynchronizedStack.scala diff --git a/sources/scala/collection/mutable/Undoable.scala b/src/library/scala/collection/mutable/Undoable.scala similarity index 100% rename from sources/scala/collection/mutable/Undoable.scala rename to src/library/scala/collection/mutable/Undoable.scala diff --git a/sources/scala/concurrent/Actor.scala b/src/library/scala/concurrent/Actor.scala similarity index 100% rename from sources/scala/concurrent/Actor.scala rename to src/library/scala/concurrent/Actor.scala diff --git a/sources/scala/concurrent/Channel.scala b/src/library/scala/concurrent/Channel.scala similarity index 100% rename from sources/scala/concurrent/Channel.scala rename to src/library/scala/concurrent/Channel.scala diff --git a/sources/scala/concurrent/Lock.scala b/src/library/scala/concurrent/Lock.scala similarity index 100% rename from sources/scala/concurrent/Lock.scala rename to src/library/scala/concurrent/Lock.scala diff --git a/sources/scala/concurrent/MailBox.scala b/src/library/scala/concurrent/MailBox.scala similarity index 100% rename from sources/scala/concurrent/MailBox.scala rename to src/library/scala/concurrent/MailBox.scala diff --git a/sources/scala/concurrent/NameServer.scala b/src/library/scala/concurrent/NameServer.scala similarity index 100% rename from sources/scala/concurrent/NameServer.scala rename to src/library/scala/concurrent/NameServer.scala diff --git a/sources/scala/concurrent/Process.scala b/src/library/scala/concurrent/Process.scala similarity index 100% rename from sources/scala/concurrent/Process.scala rename to src/library/scala/concurrent/Process.scala diff --git a/sources/scala/concurrent/SyncChannel.scala b/src/library/scala/concurrent/SyncChannel.scala similarity index 100% rename from sources/scala/concurrent/SyncChannel.scala rename to src/library/scala/concurrent/SyncChannel.scala diff --git a/sources/scala/concurrent/SyncVar.scala b/src/library/scala/concurrent/SyncVar.scala similarity index 100% rename from sources/scala/concurrent/SyncVar.scala rename to src/library/scala/concurrent/SyncVar.scala diff --git a/sources/scala/concurrent/TIMEOUT.scala b/src/library/scala/concurrent/TIMEOUT.scala similarity index 100% rename from sources/scala/concurrent/TIMEOUT.scala rename to src/library/scala/concurrent/TIMEOUT.scala diff --git a/sources/scala/concurrent/jolib.scala b/src/library/scala/concurrent/jolib.scala similarity index 100% rename from sources/scala/concurrent/jolib.scala rename to src/library/scala/concurrent/jolib.scala diff --git a/sources/scala/concurrent/ops.scala b/src/library/scala/concurrent/ops.scala similarity index 100% rename from sources/scala/concurrent/ops.scala rename to src/library/scala/concurrent/ops.scala diff --git a/sources/scala/concurrent/pilib.scala b/src/library/scala/concurrent/pilib.scala similarity index 100% rename from sources/scala/concurrent/pilib.scala rename to src/library/scala/concurrent/pilib.scala diff --git a/sources/scala/dbc/DataType.scala b/src/library/scala/dbc/DataType.scala similarity index 100% rename from sources/scala/dbc/DataType.scala rename to src/library/scala/dbc/DataType.scala diff --git a/sources/scala/dbc/Database.scala b/src/library/scala/dbc/Database.scala similarity index 100% rename from sources/scala/dbc/Database.scala rename to src/library/scala/dbc/Database.scala diff --git a/sources/scala/dbc/Syntax.scala b/src/library/scala/dbc/Syntax.scala similarity index 100% rename from sources/scala/dbc/Syntax.scala rename to src/library/scala/dbc/Syntax.scala diff --git a/sources/scala/dbc/Utilities.scala b/src/library/scala/dbc/Utilities.scala similarity index 100% rename from sources/scala/dbc/Utilities.scala rename to src/library/scala/dbc/Utilities.scala diff --git a/sources/scala/dbc/Value.scala b/src/library/scala/dbc/Value.scala similarity index 100% rename from sources/scala/dbc/Value.scala rename to src/library/scala/dbc/Value.scala diff --git a/sources/scala/dbc/Vendor.scala b/src/library/scala/dbc/Vendor.scala similarity index 100% rename from sources/scala/dbc/Vendor.scala rename to src/library/scala/dbc/Vendor.scala diff --git a/sources/scala/dbc/datatype/ApproximateNumeric.scala b/src/library/scala/dbc/datatype/ApproximateNumeric.scala similarity index 100% rename from sources/scala/dbc/datatype/ApproximateNumeric.scala rename to src/library/scala/dbc/datatype/ApproximateNumeric.scala diff --git a/sources/scala/dbc/datatype/Boolean.scala b/src/library/scala/dbc/datatype/Boolean.scala similarity index 100% rename from sources/scala/dbc/datatype/Boolean.scala rename to src/library/scala/dbc/datatype/Boolean.scala diff --git a/sources/scala/dbc/datatype/Character.scala b/src/library/scala/dbc/datatype/Character.scala similarity index 100% rename from sources/scala/dbc/datatype/Character.scala rename to src/library/scala/dbc/datatype/Character.scala diff --git a/sources/scala/dbc/datatype/CharacterLargeObject.scala b/src/library/scala/dbc/datatype/CharacterLargeObject.scala similarity index 100% rename from sources/scala/dbc/datatype/CharacterLargeObject.scala rename to src/library/scala/dbc/datatype/CharacterLargeObject.scala diff --git a/sources/scala/dbc/datatype/CharacterString.scala b/src/library/scala/dbc/datatype/CharacterString.scala similarity index 100% rename from sources/scala/dbc/datatype/CharacterString.scala rename to src/library/scala/dbc/datatype/CharacterString.scala diff --git a/sources/scala/dbc/datatype/CharacterVarying.scala b/src/library/scala/dbc/datatype/CharacterVarying.scala similarity index 100% rename from sources/scala/dbc/datatype/CharacterVarying.scala rename to src/library/scala/dbc/datatype/CharacterVarying.scala diff --git a/sources/scala/dbc/datatype/ExactNumeric.scala b/src/library/scala/dbc/datatype/ExactNumeric.scala similarity index 100% rename from sources/scala/dbc/datatype/ExactNumeric.scala rename to src/library/scala/dbc/datatype/ExactNumeric.scala diff --git a/sources/scala/dbc/datatype/Factory.scala b/src/library/scala/dbc/datatype/Factory.scala similarity index 100% rename from sources/scala/dbc/datatype/Factory.scala rename to src/library/scala/dbc/datatype/Factory.scala diff --git a/sources/scala/dbc/datatype/Numeric.scala b/src/library/scala/dbc/datatype/Numeric.scala similarity index 100% rename from sources/scala/dbc/datatype/Numeric.scala rename to src/library/scala/dbc/datatype/Numeric.scala diff --git a/sources/scala/dbc/datatype/String.scala b/src/library/scala/dbc/datatype/String.scala similarity index 100% rename from sources/scala/dbc/datatype/String.scala rename to src/library/scala/dbc/datatype/String.scala diff --git a/sources/scala/dbc/datatype/Unknown.scala b/src/library/scala/dbc/datatype/Unknown.scala similarity index 100% rename from sources/scala/dbc/datatype/Unknown.scala rename to src/library/scala/dbc/datatype/Unknown.scala diff --git a/sources/scala/dbc/exception/IncompatibleSchema.scala b/src/library/scala/dbc/exception/IncompatibleSchema.scala similarity index 100% rename from sources/scala/dbc/exception/IncompatibleSchema.scala rename to src/library/scala/dbc/exception/IncompatibleSchema.scala diff --git a/sources/scala/dbc/exception/UnsupportedFeature.scala b/src/library/scala/dbc/exception/UnsupportedFeature.scala similarity index 100% rename from sources/scala/dbc/exception/UnsupportedFeature.scala rename to src/library/scala/dbc/exception/UnsupportedFeature.scala diff --git a/sources/scala/dbc/result/Field.scala b/src/library/scala/dbc/result/Field.scala similarity index 100% rename from sources/scala/dbc/result/Field.scala rename to src/library/scala/dbc/result/Field.scala diff --git a/sources/scala/dbc/result/FieldMetadata.scala b/src/library/scala/dbc/result/FieldMetadata.scala similarity index 100% rename from sources/scala/dbc/result/FieldMetadata.scala rename to src/library/scala/dbc/result/FieldMetadata.scala diff --git a/sources/scala/dbc/result/Relation.scala b/src/library/scala/dbc/result/Relation.scala similarity index 100% rename from sources/scala/dbc/result/Relation.scala rename to src/library/scala/dbc/result/Relation.scala diff --git a/sources/scala/dbc/result/Status.scala b/src/library/scala/dbc/result/Status.scala similarity index 100% rename from sources/scala/dbc/result/Status.scala rename to src/library/scala/dbc/result/Status.scala diff --git a/sources/scala/dbc/result/Tuple.scala b/src/library/scala/dbc/result/Tuple.scala similarity index 100% rename from sources/scala/dbc/result/Tuple.scala rename to src/library/scala/dbc/result/Tuple.scala diff --git a/sources/scala/dbc/statement/AccessMode.scala b/src/library/scala/dbc/statement/AccessMode.scala similarity index 100% rename from sources/scala/dbc/statement/AccessMode.scala rename to src/library/scala/dbc/statement/AccessMode.scala diff --git a/sources/scala/dbc/statement/DerivedColumn.scala b/src/library/scala/dbc/statement/DerivedColumn.scala similarity index 100% rename from sources/scala/dbc/statement/DerivedColumn.scala rename to src/library/scala/dbc/statement/DerivedColumn.scala diff --git a/sources/scala/dbc/statement/Expression.scala b/src/library/scala/dbc/statement/Expression.scala similarity index 100% rename from sources/scala/dbc/statement/Expression.scala rename to src/library/scala/dbc/statement/Expression.scala diff --git a/sources/scala/dbc/statement/Insert.scala b/src/library/scala/dbc/statement/Insert.scala similarity index 100% rename from sources/scala/dbc/statement/Insert.scala rename to src/library/scala/dbc/statement/Insert.scala diff --git a/sources/scala/dbc/statement/InsertionData.scala b/src/library/scala/dbc/statement/InsertionData.scala similarity index 100% rename from sources/scala/dbc/statement/InsertionData.scala rename to src/library/scala/dbc/statement/InsertionData.scala diff --git a/sources/scala/dbc/statement/IsolationLevel.scala b/src/library/scala/dbc/statement/IsolationLevel.scala similarity index 100% rename from sources/scala/dbc/statement/IsolationLevel.scala rename to src/library/scala/dbc/statement/IsolationLevel.scala diff --git a/sources/scala/dbc/statement/JoinType.scala b/src/library/scala/dbc/statement/JoinType.scala similarity index 100% rename from sources/scala/dbc/statement/JoinType.scala rename to src/library/scala/dbc/statement/JoinType.scala diff --git a/sources/scala/dbc/statement/Jointure.scala b/src/library/scala/dbc/statement/Jointure.scala similarity index 100% rename from sources/scala/dbc/statement/Jointure.scala rename to src/library/scala/dbc/statement/Jointure.scala diff --git a/sources/scala/dbc/statement/Relation.scala b/src/library/scala/dbc/statement/Relation.scala similarity index 98% rename from sources/scala/dbc/statement/Relation.scala rename to src/library/scala/dbc/statement/Relation.scala index 61f1c8e94..a992adea1 100644 --- a/sources/scala/dbc/statement/Relation.scala +++ b/src/library/scala/dbc/statement/Relation.scala @@ -15,7 +15,6 @@ abstract class Relation extends Statement { ((dt,wdt)=>dt.isSubtypeOf(wdt)); def typeCheck (relation: result.Relation): Unit = { - if (typeCheck != Nil) { val sameType: Boolean = ( relation.metadata.length == fieldTypes.length && (relation.metadata.zip(fieldTypes).forall({case Pair(field,expectedType) => @@ -23,7 +22,6 @@ abstract class Relation extends Statement { ); if (!sameType) throw new exception.IncompatibleSchema(fieldTypes,relation.metadata.map(field=>field.datatype)); - } } def fieldTypes: List[DataType]; diff --git a/sources/scala/dbc/statement/Select.scala b/src/library/scala/dbc/statement/Select.scala similarity index 100% rename from sources/scala/dbc/statement/Select.scala rename to src/library/scala/dbc/statement/Select.scala diff --git a/sources/scala/dbc/statement/SetClause.scala b/src/library/scala/dbc/statement/SetClause.scala similarity index 100% rename from sources/scala/dbc/statement/SetClause.scala rename to src/library/scala/dbc/statement/SetClause.scala diff --git a/sources/scala/dbc/statement/SetQuantifier.scala b/src/library/scala/dbc/statement/SetQuantifier.scala similarity index 100% rename from sources/scala/dbc/statement/SetQuantifier.scala rename to src/library/scala/dbc/statement/SetQuantifier.scala diff --git a/sources/scala/dbc/statement/Statement.scala b/src/library/scala/dbc/statement/Statement.scala similarity index 100% rename from sources/scala/dbc/statement/Statement.scala rename to src/library/scala/dbc/statement/Statement.scala diff --git a/sources/scala/dbc/statement/Status.scala b/src/library/scala/dbc/statement/Status.scala similarity index 100% rename from sources/scala/dbc/statement/Status.scala rename to src/library/scala/dbc/statement/Status.scala diff --git a/sources/scala/dbc/statement/Table.scala b/src/library/scala/dbc/statement/Table.scala similarity index 100% rename from sources/scala/dbc/statement/Table.scala rename to src/library/scala/dbc/statement/Table.scala diff --git a/sources/scala/dbc/statement/Transaction.scala b/src/library/scala/dbc/statement/Transaction.scala similarity index 100% rename from sources/scala/dbc/statement/Transaction.scala rename to src/library/scala/dbc/statement/Transaction.scala diff --git a/sources/scala/dbc/statement/Update.scala b/src/library/scala/dbc/statement/Update.scala similarity index 100% rename from sources/scala/dbc/statement/Update.scala rename to src/library/scala/dbc/statement/Update.scala diff --git a/sources/scala/dbc/statement/expression/Aggregate.scala b/src/library/scala/dbc/statement/expression/Aggregate.scala similarity index 100% rename from sources/scala/dbc/statement/expression/Aggregate.scala rename to src/library/scala/dbc/statement/expression/Aggregate.scala diff --git a/sources/scala/dbc/statement/expression/BinaryOperator.scala b/src/library/scala/dbc/statement/expression/BinaryOperator.scala similarity index 100% rename from sources/scala/dbc/statement/expression/BinaryOperator.scala rename to src/library/scala/dbc/statement/expression/BinaryOperator.scala diff --git a/sources/scala/dbc/statement/expression/Constant.scala b/src/library/scala/dbc/statement/expression/Constant.scala similarity index 100% rename from sources/scala/dbc/statement/expression/Constant.scala rename to src/library/scala/dbc/statement/expression/Constant.scala diff --git a/sources/scala/dbc/statement/expression/Default.scala b/src/library/scala/dbc/statement/expression/Default.scala similarity index 100% rename from sources/scala/dbc/statement/expression/Default.scala rename to src/library/scala/dbc/statement/expression/Default.scala diff --git a/sources/scala/dbc/statement/expression/Field.scala b/src/library/scala/dbc/statement/expression/Field.scala similarity index 100% rename from sources/scala/dbc/statement/expression/Field.scala rename to src/library/scala/dbc/statement/expression/Field.scala diff --git a/sources/scala/dbc/statement/expression/FunctionCall.scala b/src/library/scala/dbc/statement/expression/FunctionCall.scala similarity index 100% rename from sources/scala/dbc/statement/expression/FunctionCall.scala rename to src/library/scala/dbc/statement/expression/FunctionCall.scala diff --git a/sources/scala/dbc/statement/expression/Select.scala b/src/library/scala/dbc/statement/expression/Select.scala similarity index 100% rename from sources/scala/dbc/statement/expression/Select.scala rename to src/library/scala/dbc/statement/expression/Select.scala diff --git a/sources/scala/dbc/statement/expression/SetFunction.scala b/src/library/scala/dbc/statement/expression/SetFunction.scala similarity index 100% rename from sources/scala/dbc/statement/expression/SetFunction.scala rename to src/library/scala/dbc/statement/expression/SetFunction.scala diff --git a/sources/scala/dbc/statement/expression/TypeCast.scala b/src/library/scala/dbc/statement/expression/TypeCast.scala similarity index 100% rename from sources/scala/dbc/statement/expression/TypeCast.scala rename to src/library/scala/dbc/statement/expression/TypeCast.scala diff --git a/sources/scala/dbc/statement/expression/UnaryOperator.scala b/src/library/scala/dbc/statement/expression/UnaryOperator.scala similarity index 100% rename from sources/scala/dbc/statement/expression/UnaryOperator.scala rename to src/library/scala/dbc/statement/expression/UnaryOperator.scala diff --git a/sources/scala/dbc/syntax/DataTypeUtil.scala b/src/library/scala/dbc/syntax/DataTypeUtil.scala similarity index 100% rename from sources/scala/dbc/syntax/DataTypeUtil.scala rename to src/library/scala/dbc/syntax/DataTypeUtil.scala diff --git a/sources/scala/dbc/syntax/Database.scala b/src/library/scala/dbc/syntax/Database.scala similarity index 100% rename from sources/scala/dbc/syntax/Database.scala rename to src/library/scala/dbc/syntax/Database.scala diff --git a/sources/scala/dbc/syntax/Statement.scala b/src/library/scala/dbc/syntax/Statement.scala similarity index 100% rename from sources/scala/dbc/syntax/Statement.scala rename to src/library/scala/dbc/syntax/Statement.scala diff --git a/sources/scala/dbc/syntax/StatementExpression.scala b/src/library/scala/dbc/syntax/StatementExpression.scala similarity index 100% rename from sources/scala/dbc/syntax/StatementExpression.scala rename to src/library/scala/dbc/syntax/StatementExpression.scala diff --git a/sources/scala/dbc/value/ApproximateNumeric.scala b/src/library/scala/dbc/value/ApproximateNumeric.scala similarity index 100% rename from sources/scala/dbc/value/ApproximateNumeric.scala rename to src/library/scala/dbc/value/ApproximateNumeric.scala diff --git a/sources/scala/dbc/value/Boolean.scala b/src/library/scala/dbc/value/Boolean.scala similarity index 100% rename from sources/scala/dbc/value/Boolean.scala rename to src/library/scala/dbc/value/Boolean.scala diff --git a/sources/scala/dbc/value/Character.scala b/src/library/scala/dbc/value/Character.scala similarity index 100% rename from sources/scala/dbc/value/Character.scala rename to src/library/scala/dbc/value/Character.scala diff --git a/sources/scala/dbc/value/CharacterLargeObject.scala b/src/library/scala/dbc/value/CharacterLargeObject.scala similarity index 100% rename from sources/scala/dbc/value/CharacterLargeObject.scala rename to src/library/scala/dbc/value/CharacterLargeObject.scala diff --git a/sources/scala/dbc/value/CharacterVarying.scala b/src/library/scala/dbc/value/CharacterVarying.scala similarity index 100% rename from sources/scala/dbc/value/CharacterVarying.scala rename to src/library/scala/dbc/value/CharacterVarying.scala diff --git a/sources/scala/dbc/value/Conversion.scala b/src/library/scala/dbc/value/Conversion.scala similarity index 100% rename from sources/scala/dbc/value/Conversion.scala rename to src/library/scala/dbc/value/Conversion.scala diff --git a/sources/scala/dbc/value/ExactNumeric.scala b/src/library/scala/dbc/value/ExactNumeric.scala similarity index 100% rename from sources/scala/dbc/value/ExactNumeric.scala rename to src/library/scala/dbc/value/ExactNumeric.scala diff --git a/sources/scala/dbc/value/Factory.scala b/src/library/scala/dbc/value/Factory.scala similarity index 100% rename from sources/scala/dbc/value/Factory.scala rename to src/library/scala/dbc/value/Factory.scala diff --git a/sources/scala/dbc/value/Unknown.scala b/src/library/scala/dbc/value/Unknown.scala similarity index 100% rename from sources/scala/dbc/value/Unknown.scala rename to src/library/scala/dbc/value/Unknown.scala diff --git a/sources/scala/dbc/vendor/PostgreSQL.scala b/src/library/scala/dbc/vendor/PostgreSQL.scala similarity index 100% rename from sources/scala/dbc/vendor/PostgreSQL.scala rename to src/library/scala/dbc/vendor/PostgreSQL.scala diff --git a/sources/scala/io/Position.scala b/src/library/scala/io/Position.scala similarity index 100% rename from sources/scala/io/Position.scala rename to src/library/scala/io/Position.scala diff --git a/sources/scala/io/Source.scala b/src/library/scala/io/Source.scala similarity index 100% rename from sources/scala/io/Source.scala rename to src/library/scala/io/Source.scala diff --git a/sources/scala/mobile/Code.scala b/src/library/scala/mobile/Code.scala similarity index 100% rename from sources/scala/mobile/Code.scala rename to src/library/scala/mobile/Code.scala diff --git a/sources/scala/mobile/Location.scala b/src/library/scala/mobile/Location.scala similarity index 100% rename from sources/scala/mobile/Location.scala rename to src/library/scala/mobile/Location.scala diff --git a/sources/scala/reflect/Code.scala b/src/library/scala/reflect/Code.scala similarity index 100% rename from sources/scala/reflect/Code.scala rename to src/library/scala/reflect/Code.scala diff --git a/sources/scala/reflect/Print.scala b/src/library/scala/reflect/Print.scala similarity index 100% rename from sources/scala/reflect/Print.scala rename to src/library/scala/reflect/Print.scala diff --git a/sources/scala/reflect/Symbol.scala b/src/library/scala/reflect/Symbol.scala similarity index 100% rename from sources/scala/reflect/Symbol.scala rename to src/library/scala/reflect/Symbol.scala diff --git a/sources/scala/reflect/Type.scala b/src/library/scala/reflect/Type.scala similarity index 100% rename from sources/scala/reflect/Type.scala rename to src/library/scala/reflect/Type.scala diff --git a/sources/scala/reflect/TypedCode.scala b/src/library/scala/reflect/TypedCode.scala similarity index 100% rename from sources/scala/reflect/TypedCode.scala rename to src/library/scala/reflect/TypedCode.scala diff --git a/sources/scala/remote.scala b/src/library/scala/remote.scala similarity index 100% rename from sources/scala/remote.scala rename to src/library/scala/remote.scala diff --git a/sources/scala/runtime/AtomicReference.java b/src/library/scala/runtime/AtomicReference.java similarity index 100% rename from sources/scala/runtime/AtomicReference.java rename to src/library/scala/runtime/AtomicReference.java diff --git a/sources/scala/runtime/BooleanRef.java b/src/library/scala/runtime/BooleanRef.java similarity index 100% rename from sources/scala/runtime/BooleanRef.java rename to src/library/scala/runtime/BooleanRef.java diff --git a/sources/scala/runtime/BoxedAnyArray.scala b/src/library/scala/runtime/BoxedAnyArray.scala similarity index 100% rename from sources/scala/runtime/BoxedAnyArray.scala rename to src/library/scala/runtime/BoxedAnyArray.scala diff --git a/sources/scala/runtime/BoxedArray.scala b/src/library/scala/runtime/BoxedArray.scala similarity index 100% rename from sources/scala/runtime/BoxedArray.scala rename to src/library/scala/runtime/BoxedArray.scala diff --git a/sources/scala/runtime/BoxedBoolean.java b/src/library/scala/runtime/BoxedBoolean.java similarity index 100% rename from sources/scala/runtime/BoxedBoolean.java rename to src/library/scala/runtime/BoxedBoolean.java diff --git a/sources/scala/runtime/BoxedBooleanArray.scala b/src/library/scala/runtime/BoxedBooleanArray.scala similarity index 100% rename from sources/scala/runtime/BoxedBooleanArray.scala rename to src/library/scala/runtime/BoxedBooleanArray.scala diff --git a/sources/scala/runtime/BoxedByte.java b/src/library/scala/runtime/BoxedByte.java similarity index 100% rename from sources/scala/runtime/BoxedByte.java rename to src/library/scala/runtime/BoxedByte.java diff --git a/sources/scala/runtime/BoxedByteArray.scala b/src/library/scala/runtime/BoxedByteArray.scala similarity index 100% rename from sources/scala/runtime/BoxedByteArray.scala rename to src/library/scala/runtime/BoxedByteArray.scala diff --git a/sources/scala/runtime/BoxedChar.java b/src/library/scala/runtime/BoxedChar.java similarity index 100% rename from sources/scala/runtime/BoxedChar.java rename to src/library/scala/runtime/BoxedChar.java diff --git a/sources/scala/runtime/BoxedCharArray.scala b/src/library/scala/runtime/BoxedCharArray.scala similarity index 100% rename from sources/scala/runtime/BoxedCharArray.scala rename to src/library/scala/runtime/BoxedCharArray.scala diff --git a/sources/scala/runtime/BoxedDouble.java b/src/library/scala/runtime/BoxedDouble.java similarity index 100% rename from sources/scala/runtime/BoxedDouble.java rename to src/library/scala/runtime/BoxedDouble.java diff --git a/sources/scala/runtime/BoxedDoubleArray.scala b/src/library/scala/runtime/BoxedDoubleArray.scala similarity index 100% rename from sources/scala/runtime/BoxedDoubleArray.scala rename to src/library/scala/runtime/BoxedDoubleArray.scala diff --git a/sources/scala/runtime/BoxedFloat.java b/src/library/scala/runtime/BoxedFloat.java similarity index 100% rename from sources/scala/runtime/BoxedFloat.java rename to src/library/scala/runtime/BoxedFloat.java diff --git a/sources/scala/runtime/BoxedFloatArray.scala b/src/library/scala/runtime/BoxedFloatArray.scala similarity index 100% rename from sources/scala/runtime/BoxedFloatArray.scala rename to src/library/scala/runtime/BoxedFloatArray.scala diff --git a/sources/scala/runtime/BoxedInt.java b/src/library/scala/runtime/BoxedInt.java similarity index 100% rename from sources/scala/runtime/BoxedInt.java rename to src/library/scala/runtime/BoxedInt.java diff --git a/sources/scala/runtime/BoxedIntArray.scala b/src/library/scala/runtime/BoxedIntArray.scala similarity index 100% rename from sources/scala/runtime/BoxedIntArray.scala rename to src/library/scala/runtime/BoxedIntArray.scala diff --git a/sources/scala/runtime/BoxedLong.java b/src/library/scala/runtime/BoxedLong.java similarity index 100% rename from sources/scala/runtime/BoxedLong.java rename to src/library/scala/runtime/BoxedLong.java diff --git a/sources/scala/runtime/BoxedLongArray.scala b/src/library/scala/runtime/BoxedLongArray.scala similarity index 100% rename from sources/scala/runtime/BoxedLongArray.scala rename to src/library/scala/runtime/BoxedLongArray.scala diff --git a/sources/scala/runtime/BoxedNumber.java b/src/library/scala/runtime/BoxedNumber.java similarity index 100% rename from sources/scala/runtime/BoxedNumber.java rename to src/library/scala/runtime/BoxedNumber.java diff --git a/sources/scala/runtime/BoxedObjectArray.scala b/src/library/scala/runtime/BoxedObjectArray.scala similarity index 100% rename from sources/scala/runtime/BoxedObjectArray.scala rename to src/library/scala/runtime/BoxedObjectArray.scala diff --git a/sources/scala/runtime/BoxedShort.java b/src/library/scala/runtime/BoxedShort.java similarity index 100% rename from sources/scala/runtime/BoxedShort.java rename to src/library/scala/runtime/BoxedShort.java diff --git a/sources/scala/runtime/BoxedShortArray.scala b/src/library/scala/runtime/BoxedShortArray.scala similarity index 100% rename from sources/scala/runtime/BoxedShortArray.scala rename to src/library/scala/runtime/BoxedShortArray.scala diff --git a/sources/scala/runtime/BoxedUnit.java b/src/library/scala/runtime/BoxedUnit.java similarity index 100% rename from sources/scala/runtime/BoxedUnit.java rename to src/library/scala/runtime/BoxedUnit.java diff --git a/sources/scala/runtime/ByteRef.java b/src/library/scala/runtime/ByteRef.java similarity index 100% rename from sources/scala/runtime/ByteRef.java rename to src/library/scala/runtime/ByteRef.java diff --git a/sources/scala/runtime/CharRef.java b/src/library/scala/runtime/CharRef.java similarity index 100% rename from sources/scala/runtime/CharRef.java rename to src/library/scala/runtime/CharRef.java diff --git a/sources/scala/runtime/DoubleRef.java b/src/library/scala/runtime/DoubleRef.java similarity index 100% rename from sources/scala/runtime/DoubleRef.java rename to src/library/scala/runtime/DoubleRef.java diff --git a/sources/scala/ScalaObject.cs b/src/library/scala/runtime/ExceptionHandling.cs similarity index 62% rename from sources/scala/ScalaObject.cs rename to src/library/scala/runtime/ExceptionHandling.cs index 7f2b7f693..0a59308f9 100644 --- a/sources/scala/ScalaObject.cs +++ b/src/library/scala/runtime/ExceptionHandling.cs @@ -9,16 +9,25 @@ // $Id$ using System; -using scala.runtime; +using scala; -namespace scala -{ - [Meta("class extends scala.AnyRef;")] - public interface ScalaObject - { - /** This method is needed for optimizing pattern matching expressions - * which match on constructors of case classes. - */ - int __tag(); - } -} \ No newline at end of file +namespace scala.runtime { + + public abstract class RunTime { + + public interface Runnable { + void run(); + } + + public static Exception tryCatch(Runnable runnable) { + try { + runnable.run(); + return null; + } catch (Exception exception) { + return exception; + } + } + + } + +} diff --git a/sources/scala/runtime/types/LazyParents.java b/src/library/scala/runtime/ExceptionHandling.java similarity index 60% rename from sources/scala/runtime/types/LazyParents.java rename to src/library/scala/runtime/ExceptionHandling.java index 7f3e64575..293d2cad8 100644 --- a/sources/scala/runtime/types/LazyParents.java +++ b/src/library/scala/runtime/ExceptionHandling.java @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2005, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2002-2005, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -8,15 +8,17 @@ // $Id$ -package scala.runtime.types; +package scala.runtime; -/** - * Abstract superclass for suspended computations of parent classes. - * - * @author Michel Schinz - * @version 1.0 - */ +public abstract class ExceptionHandling { + + public static Throwable tryCatch(Runnable runnable) { + try { + runnable.run(); + return null; + } catch (Throwable exception) { + return exception; + } + } -public abstract class LazyParents { - abstract public ScalaClassType[] force(); } diff --git a/sources/scala/runtime/FNV_Hash.java b/src/library/scala/runtime/FNV_Hash.java similarity index 100% rename from sources/scala/runtime/FNV_Hash.java rename to src/library/scala/runtime/FNV_Hash.java diff --git a/sources/scala/runtime/FloatRef.java b/src/library/scala/runtime/FloatRef.java similarity index 100% rename from sources/scala/runtime/FloatRef.java rename to src/library/scala/runtime/FloatRef.java diff --git a/sources/scala/runtime/IOMap.java b/src/library/scala/runtime/IOMap.java similarity index 100% rename from sources/scala/runtime/IOMap.java rename to src/library/scala/runtime/IOMap.java diff --git a/sources/scala/runtime/IntRef.java b/src/library/scala/runtime/IntRef.java similarity index 100% rename from sources/scala/runtime/IntRef.java rename to src/library/scala/runtime/IntRef.java diff --git a/sources/scala/runtime/InterpreterSupport.java b/src/library/scala/runtime/InterpreterSupport.java similarity index 100% rename from sources/scala/runtime/InterpreterSupport.java rename to src/library/scala/runtime/InterpreterSupport.java diff --git a/sources/scala/runtime/LongRef.java b/src/library/scala/runtime/LongRef.java similarity index 100% rename from sources/scala/runtime/LongRef.java rename to src/library/scala/runtime/LongRef.java diff --git a/sources/scala/runtime/MetaAttribute.cs b/src/library/scala/runtime/MetaAttribute.cs similarity index 100% rename from sources/scala/runtime/MetaAttribute.cs rename to src/library/scala/runtime/MetaAttribute.cs diff --git a/sources/scala/runtime/ObjectRef.java b/src/library/scala/runtime/ObjectRef.java similarity index 100% rename from sources/scala/runtime/ObjectRef.java rename to src/library/scala/runtime/ObjectRef.java diff --git a/sources/scala/runtime/ScalaRunTime.scala b/src/library/scala/runtime/ScalaRunTime.scala similarity index 94% rename from sources/scala/runtime/ScalaRunTime.scala rename to src/library/scala/runtime/ScalaRunTime.scala index e42f9efa5..458e6be61 100644 --- a/sources/scala/runtime/ScalaRunTime.scala +++ b/src/library/scala/runtime/ScalaRunTime.scala @@ -6,7 +6,7 @@ ** |/ ** \* */ -// $Id$ +// $Id:ScalaRunTime.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ package scala.runtime; @@ -29,7 +29,7 @@ object ScalaRunTime { def Try[a](block: => a): Try[a] = new Try[a] with Runnable { var result: a = _; - var exception: Throwable = RunTime.tryCatch(this); + var exception: Throwable = ExceptionHandling.tryCatch(this); def run(): Unit = result = block; diff --git a/sources/scala/runtime/ShortRef.java b/src/library/scala/runtime/ShortRef.java similarity index 100% rename from sources/scala/runtime/ShortRef.java rename to src/library/scala/runtime/ShortRef.java diff --git a/sources/scala/runtime/SymtabAttribute.cs b/src/library/scala/runtime/SymtabAttribute.cs similarity index 100% rename from sources/scala/runtime/SymtabAttribute.cs rename to src/library/scala/runtime/SymtabAttribute.cs diff --git a/sources/scala/runtime/compat/Math.scala b/src/library/scala/runtime/compat/Math.scala similarity index 100% rename from sources/scala/runtime/compat/Math.scala rename to src/library/scala/runtime/compat/Math.scala diff --git a/sources/scala/runtime/compat/Platform.scala b/src/library/scala/runtime/compat/Platform.scala similarity index 100% rename from sources/scala/runtime/compat/Platform.scala rename to src/library/scala/runtime/compat/Platform.scala diff --git a/sources/scala/runtime/compat/StringBuilder.scala b/src/library/scala/runtime/compat/StringBuilder.scala similarity index 100% rename from sources/scala/runtime/compat/StringBuilder.scala rename to src/library/scala/runtime/compat/StringBuilder.scala diff --git a/sources/scala/runtime/matching/Address.scala b/src/library/scala/runtime/matching/Address.scala similarity index 100% rename from sources/scala/runtime/matching/Address.scala rename to src/library/scala/runtime/matching/Address.scala diff --git a/sources/scala/runtime/matching/NonTerm.scala b/src/library/scala/runtime/matching/NonTerm.scala similarity index 100% rename from sources/scala/runtime/matching/NonTerm.scala rename to src/library/scala/runtime/matching/NonTerm.scala diff --git a/sources/scala/runtime/matching/PatternTests.scala b/src/library/scala/runtime/matching/PatternTests.scala similarity index 100% rename from sources/scala/runtime/matching/PatternTests.scala rename to src/library/scala/runtime/matching/PatternTests.scala diff --git a/sources/scala/runtime/matching/Rule.scala b/src/library/scala/runtime/matching/Rule.scala similarity index 100% rename from sources/scala/runtime/matching/Rule.scala rename to src/library/scala/runtime/matching/Rule.scala diff --git a/sources/scala/runtime/matching/TestAlphabet.scala b/src/library/scala/runtime/matching/TestAlphabet.scala similarity index 100% rename from sources/scala/runtime/matching/TestAlphabet.scala rename to src/library/scala/runtime/matching/TestAlphabet.scala diff --git a/sources/scala/serializable.scala b/src/library/scala/serializable.scala similarity index 100% rename from sources/scala/serializable.scala rename to src/library/scala/serializable.scala diff --git a/sources/scala/testing/Benchmark.scala b/src/library/scala/testing/Benchmark.scala similarity index 100% rename from sources/scala/testing/Benchmark.scala rename to src/library/scala/testing/Benchmark.scala diff --git a/sources/scala/testing/SUnit.scala b/src/library/scala/testing/SUnit.scala similarity index 100% rename from sources/scala/testing/SUnit.scala rename to src/library/scala/testing/SUnit.scala diff --git a/sources/scala/testing/UnitTest.scala b/src/library/scala/testing/UnitTest.scala similarity index 100% rename from sources/scala/testing/UnitTest.scala rename to src/library/scala/testing/UnitTest.scala diff --git a/sources/scala/text/Document.scala b/src/library/scala/text/Document.scala similarity index 100% rename from sources/scala/text/Document.scala rename to src/library/scala/text/Document.scala diff --git a/sources/scala/transient.scala b/src/library/scala/transient.scala similarity index 87% rename from sources/scala/transient.scala rename to src/library/scala/transient.scala index 6b18785a5..e94744bf4 100644 --- a/sources/scala/transient.scala +++ b/src/library/scala/transient.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:transient.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/util/automata/BaseBerrySethi.scala b/src/library/scala/util/automata/BaseBerrySethi.scala similarity index 100% rename from sources/scala/util/automata/BaseBerrySethi.scala rename to src/library/scala/util/automata/BaseBerrySethi.scala diff --git a/sources/scala/util/automata/DetWordAutom.scala b/src/library/scala/util/automata/DetWordAutom.scala similarity index 100% rename from sources/scala/util/automata/DetWordAutom.scala rename to src/library/scala/util/automata/DetWordAutom.scala diff --git a/sources/scala/util/automata/Inclusion.scala b/src/library/scala/util/automata/Inclusion.scala similarity index 100% rename from sources/scala/util/automata/Inclusion.scala rename to src/library/scala/util/automata/Inclusion.scala diff --git a/sources/scala/util/automata/NondetWordAutom.scala b/src/library/scala/util/automata/NondetWordAutom.scala similarity index 100% rename from sources/scala/util/automata/NondetWordAutom.scala rename to src/library/scala/util/automata/NondetWordAutom.scala diff --git a/sources/scala/util/automata/SubsetConstruction.scala b/src/library/scala/util/automata/SubsetConstruction.scala similarity index 100% rename from sources/scala/util/automata/SubsetConstruction.scala rename to src/library/scala/util/automata/SubsetConstruction.scala diff --git a/sources/scala/util/automata/WordBerrySethi.scala b/src/library/scala/util/automata/WordBerrySethi.scala similarity index 100% rename from sources/scala/util/automata/WordBerrySethi.scala rename to src/library/scala/util/automata/WordBerrySethi.scala diff --git a/sources/scala/util/grammar/HedgeRHS.scala b/src/library/scala/util/grammar/HedgeRHS.scala similarity index 100% rename from sources/scala/util/grammar/HedgeRHS.scala rename to src/library/scala/util/grammar/HedgeRHS.scala diff --git a/sources/scala/util/grammar/TreeRHS.scala b/src/library/scala/util/grammar/TreeRHS.scala similarity index 100% rename from sources/scala/util/grammar/TreeRHS.scala rename to src/library/scala/util/grammar/TreeRHS.scala diff --git a/sources/scala/util/logging/ConsoleLogger.scala b/src/library/scala/util/logging/ConsoleLogger.scala similarity index 100% rename from sources/scala/util/logging/ConsoleLogger.scala rename to src/library/scala/util/logging/ConsoleLogger.scala diff --git a/sources/scala/util/logging/Logged.scala b/src/library/scala/util/logging/Logged.scala similarity index 100% rename from sources/scala/util/logging/Logged.scala rename to src/library/scala/util/logging/Logged.scala diff --git a/sources/scala/util/parsing/CharInputStreamIterator.scala b/src/library/scala/util/parsing/CharInputStreamIterator.scala similarity index 100% rename from sources/scala/util/parsing/CharInputStreamIterator.scala rename to src/library/scala/util/parsing/CharInputStreamIterator.scala diff --git a/sources/scala/util/parsing/Parsers.scala b/src/library/scala/util/parsing/Parsers.scala similarity index 100% rename from sources/scala/util/parsing/Parsers.scala rename to src/library/scala/util/parsing/Parsers.scala diff --git a/sources/scala/util/parsing/SimpleTokenizer.scala b/src/library/scala/util/parsing/SimpleTokenizer.scala similarity index 100% rename from sources/scala/util/parsing/SimpleTokenizer.scala rename to src/library/scala/util/parsing/SimpleTokenizer.scala diff --git a/sources/scala/util/regexp/Base.scala b/src/library/scala/util/regexp/Base.scala similarity index 100% rename from sources/scala/util/regexp/Base.scala rename to src/library/scala/util/regexp/Base.scala diff --git a/sources/scala/util/regexp/PointedHedgeExp.scala b/src/library/scala/util/regexp/PointedHedgeExp.scala similarity index 100% rename from sources/scala/util/regexp/PointedHedgeExp.scala rename to src/library/scala/util/regexp/PointedHedgeExp.scala diff --git a/sources/scala/util/regexp/SyntaxError.scala b/src/library/scala/util/regexp/SyntaxError.scala similarity index 100% rename from sources/scala/util/regexp/SyntaxError.scala rename to src/library/scala/util/regexp/SyntaxError.scala diff --git a/sources/scala/util/regexp/WordExp.scala b/src/library/scala/util/regexp/WordExp.scala similarity index 100% rename from sources/scala/util/regexp/WordExp.scala rename to src/library/scala/util/regexp/WordExp.scala diff --git a/sources/scala/volatile.scala b/src/library/scala/volatile.scala similarity index 87% rename from sources/scala/volatile.scala rename to src/library/scala/volatile.scala index b60e4bbe3..ab8b2e780 100644 --- a/sources/scala/volatile.scala +++ b/src/library/scala/volatile.scala @@ -4,7 +4,7 @@ ** __\ \/ /__/ __ |/ /__/ __ | ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** -** $Id$ +** $Id:volatile.scala 5359 2005-12-16 16:33:49 +0100 (Fri, 16 Dec 2005) dubochet $ \* */ package scala; diff --git a/sources/scala/xml/Atom.scala b/src/library/scala/xml/Atom.scala similarity index 100% rename from sources/scala/xml/Atom.scala rename to src/library/scala/xml/Atom.scala diff --git a/sources/scala/xml/Comment.scala b/src/library/scala/xml/Comment.scala similarity index 100% rename from sources/scala/xml/Comment.scala rename to src/library/scala/xml/Comment.scala diff --git a/sources/scala/xml/Document.scala b/src/library/scala/xml/Document.scala similarity index 100% rename from sources/scala/xml/Document.scala rename to src/library/scala/xml/Document.scala diff --git a/sources/scala/xml/Elem.scala b/src/library/scala/xml/Elem.scala similarity index 100% rename from sources/scala/xml/Elem.scala rename to src/library/scala/xml/Elem.scala diff --git a/sources/scala/xml/EntityRef.scala b/src/library/scala/xml/EntityRef.scala similarity index 100% rename from sources/scala/xml/EntityRef.scala rename to src/library/scala/xml/EntityRef.scala diff --git a/sources/scala/xml/MalformedAttributeException.scala b/src/library/scala/xml/MalformedAttributeException.scala similarity index 100% rename from sources/scala/xml/MalformedAttributeException.scala rename to src/library/scala/xml/MalformedAttributeException.scala diff --git a/sources/scala/xml/MetaData.scala b/src/library/scala/xml/MetaData.scala similarity index 100% rename from sources/scala/xml/MetaData.scala rename to src/library/scala/xml/MetaData.scala diff --git a/sources/scala/xml/Molecule.scala b/src/library/scala/xml/Molecule.scala similarity index 100% rename from sources/scala/xml/Molecule.scala rename to src/library/scala/xml/Molecule.scala diff --git a/sources/scala/xml/NamespaceBinding.scala b/src/library/scala/xml/NamespaceBinding.scala similarity index 100% rename from sources/scala/xml/NamespaceBinding.scala rename to src/library/scala/xml/NamespaceBinding.scala diff --git a/sources/scala/xml/Node.scala b/src/library/scala/xml/Node.scala similarity index 100% rename from sources/scala/xml/Node.scala rename to src/library/scala/xml/Node.scala diff --git a/sources/scala/xml/NodeBuffer.scala b/src/library/scala/xml/NodeBuffer.scala similarity index 100% rename from sources/scala/xml/NodeBuffer.scala rename to src/library/scala/xml/NodeBuffer.scala diff --git a/sources/scala/xml/NodeSeq.scala b/src/library/scala/xml/NodeSeq.scala similarity index 100% rename from sources/scala/xml/NodeSeq.scala rename to src/library/scala/xml/NodeSeq.scala diff --git a/sources/scala/xml/NodeTraverser.scala b/src/library/scala/xml/NodeTraverser.scala similarity index 100% rename from sources/scala/xml/NodeTraverser.scala rename to src/library/scala/xml/NodeTraverser.scala diff --git a/sources/scala/xml/Null.scala b/src/library/scala/xml/Null.scala similarity index 100% rename from sources/scala/xml/Null.scala rename to src/library/scala/xml/Null.scala diff --git a/sources/scala/xml/Parsing.scala b/src/library/scala/xml/Parsing.scala similarity index 100% rename from sources/scala/xml/Parsing.scala rename to src/library/scala/xml/Parsing.scala diff --git a/sources/scala/xml/PrefixedAttribute.scala b/src/library/scala/xml/PrefixedAttribute.scala similarity index 100% rename from sources/scala/xml/PrefixedAttribute.scala rename to src/library/scala/xml/PrefixedAttribute.scala diff --git a/sources/scala/xml/PrettyPrinter.scala b/src/library/scala/xml/PrettyPrinter.scala similarity index 100% rename from sources/scala/xml/PrettyPrinter.scala rename to src/library/scala/xml/PrettyPrinter.scala diff --git a/sources/scala/xml/ProcInstr.scala b/src/library/scala/xml/ProcInstr.scala similarity index 100% rename from sources/scala/xml/ProcInstr.scala rename to src/library/scala/xml/ProcInstr.scala diff --git a/sources/scala/xml/SpecialNode.scala b/src/library/scala/xml/SpecialNode.scala similarity index 100% rename from sources/scala/xml/SpecialNode.scala rename to src/library/scala/xml/SpecialNode.scala diff --git a/sources/scala/xml/Text.scala b/src/library/scala/xml/Text.scala similarity index 100% rename from sources/scala/xml/Text.scala rename to src/library/scala/xml/Text.scala diff --git a/sources/scala/xml/TextBuffer.scala b/src/library/scala/xml/TextBuffer.scala similarity index 100% rename from sources/scala/xml/TextBuffer.scala rename to src/library/scala/xml/TextBuffer.scala diff --git a/sources/scala/xml/TopScope.scala b/src/library/scala/xml/TopScope.scala similarity index 100% rename from sources/scala/xml/TopScope.scala rename to src/library/scala/xml/TopScope.scala diff --git a/sources/scala/xml/TypeSymbol.scala b/src/library/scala/xml/TypeSymbol.scala similarity index 100% rename from sources/scala/xml/TypeSymbol.scala rename to src/library/scala/xml/TypeSymbol.scala diff --git a/sources/scala/xml/UnprefixedAttribute.scala b/src/library/scala/xml/UnprefixedAttribute.scala similarity index 100% rename from sources/scala/xml/UnprefixedAttribute.scala rename to src/library/scala/xml/UnprefixedAttribute.scala diff --git a/sources/scala/xml/Utility.scala b/src/library/scala/xml/Utility.scala similarity index 100% rename from sources/scala/xml/Utility.scala rename to src/library/scala/xml/Utility.scala diff --git a/sources/scala/xml/XML.scala b/src/library/scala/xml/XML.scala similarity index 100% rename from sources/scala/xml/XML.scala rename to src/library/scala/xml/XML.scala diff --git a/sources/scala/xml/dtd/ContentModel.scala b/src/library/scala/xml/dtd/ContentModel.scala similarity index 100% rename from sources/scala/xml/dtd/ContentModel.scala rename to src/library/scala/xml/dtd/ContentModel.scala diff --git a/sources/scala/xml/dtd/ContentModelParser.scala b/src/library/scala/xml/dtd/ContentModelParser.scala similarity index 100% rename from sources/scala/xml/dtd/ContentModelParser.scala rename to src/library/scala/xml/dtd/ContentModelParser.scala diff --git a/sources/scala/xml/dtd/DTD.scala b/src/library/scala/xml/dtd/DTD.scala similarity index 100% rename from sources/scala/xml/dtd/DTD.scala rename to src/library/scala/xml/dtd/DTD.scala diff --git a/sources/scala/xml/dtd/Decl.scala b/src/library/scala/xml/dtd/Decl.scala similarity index 100% rename from sources/scala/xml/dtd/Decl.scala rename to src/library/scala/xml/dtd/Decl.scala diff --git a/sources/scala/xml/dtd/DocType.scala b/src/library/scala/xml/dtd/DocType.scala similarity index 100% rename from sources/scala/xml/dtd/DocType.scala rename to src/library/scala/xml/dtd/DocType.scala diff --git a/sources/scala/xml/dtd/DtdTypeSymbol.scala b/src/library/scala/xml/dtd/DtdTypeSymbol.scala similarity index 100% rename from sources/scala/xml/dtd/DtdTypeSymbol.scala rename to src/library/scala/xml/dtd/DtdTypeSymbol.scala diff --git a/sources/scala/xml/dtd/ElementValidator.scala b/src/library/scala/xml/dtd/ElementValidator.scala similarity index 100% rename from sources/scala/xml/dtd/ElementValidator.scala rename to src/library/scala/xml/dtd/ElementValidator.scala diff --git a/sources/scala/xml/dtd/ExternalID.scala b/src/library/scala/xml/dtd/ExternalID.scala similarity index 100% rename from sources/scala/xml/dtd/ExternalID.scala rename to src/library/scala/xml/dtd/ExternalID.scala diff --git a/sources/scala/xml/dtd/Scanner.scala b/src/library/scala/xml/dtd/Scanner.scala similarity index 100% rename from sources/scala/xml/dtd/Scanner.scala rename to src/library/scala/xml/dtd/Scanner.scala diff --git a/sources/scala/xml/dtd/Tokens.scala b/src/library/scala/xml/dtd/Tokens.scala similarity index 100% rename from sources/scala/xml/dtd/Tokens.scala rename to src/library/scala/xml/dtd/Tokens.scala diff --git a/sources/scala/xml/dtd/ValidationException.scala b/src/library/scala/xml/dtd/ValidationException.scala similarity index 100% rename from sources/scala/xml/dtd/ValidationException.scala rename to src/library/scala/xml/dtd/ValidationException.scala diff --git a/sources/scala/xml/factory/Binder.scala b/src/library/scala/xml/factory/Binder.scala similarity index 100% rename from sources/scala/xml/factory/Binder.scala rename to src/library/scala/xml/factory/Binder.scala diff --git a/sources/scala/xml/factory/LoggedNodeFactory.scala b/src/library/scala/xml/factory/LoggedNodeFactory.scala similarity index 100% rename from sources/scala/xml/factory/LoggedNodeFactory.scala rename to src/library/scala/xml/factory/LoggedNodeFactory.scala diff --git a/sources/scala/xml/factory/NodeFactory.scala b/src/library/scala/xml/factory/NodeFactory.scala similarity index 100% rename from sources/scala/xml/factory/NodeFactory.scala rename to src/library/scala/xml/factory/NodeFactory.scala diff --git a/sources/scala/xml/parsing/ConstructingHandler.scala b/src/library/scala/xml/parsing/ConstructingHandler.scala similarity index 100% rename from sources/scala/xml/parsing/ConstructingHandler.scala rename to src/library/scala/xml/parsing/ConstructingHandler.scala diff --git a/sources/scala/xml/parsing/ConstructingParser.scala b/src/library/scala/xml/parsing/ConstructingParser.scala similarity index 100% rename from sources/scala/xml/parsing/ConstructingParser.scala rename to src/library/scala/xml/parsing/ConstructingParser.scala diff --git a/sources/scala/xml/parsing/DefaultMarkupHandler.scala b/src/library/scala/xml/parsing/DefaultMarkupHandler.scala similarity index 100% rename from sources/scala/xml/parsing/DefaultMarkupHandler.scala rename to src/library/scala/xml/parsing/DefaultMarkupHandler.scala diff --git a/sources/scala/xml/parsing/ExternalSources.scala b/src/library/scala/xml/parsing/ExternalSources.scala similarity index 100% rename from sources/scala/xml/parsing/ExternalSources.scala rename to src/library/scala/xml/parsing/ExternalSources.scala diff --git a/sources/scala/xml/parsing/FactoryAdapter.scala b/src/library/scala/xml/parsing/FactoryAdapter.scala similarity index 100% rename from sources/scala/xml/parsing/FactoryAdapter.scala rename to src/library/scala/xml/parsing/FactoryAdapter.scala diff --git a/sources/scala/xml/parsing/FatalError.scala b/src/library/scala/xml/parsing/FatalError.scala similarity index 100% rename from sources/scala/xml/parsing/FatalError.scala rename to src/library/scala/xml/parsing/FatalError.scala diff --git a/sources/scala/xml/parsing/MarkupHandler.scala b/src/library/scala/xml/parsing/MarkupHandler.scala similarity index 100% rename from sources/scala/xml/parsing/MarkupHandler.scala rename to src/library/scala/xml/parsing/MarkupHandler.scala diff --git a/sources/scala/xml/parsing/MarkupParser.scala b/src/library/scala/xml/parsing/MarkupParser.scala similarity index 100% rename from sources/scala/xml/parsing/MarkupParser.scala rename to src/library/scala/xml/parsing/MarkupParser.scala diff --git a/sources/scala/xml/parsing/NoBindingFactoryAdapter.scala b/src/library/scala/xml/parsing/NoBindingFactoryAdapter.scala similarity index 100% rename from sources/scala/xml/parsing/NoBindingFactoryAdapter.scala rename to src/library/scala/xml/parsing/NoBindingFactoryAdapter.scala diff --git a/sources/scala/xml/parsing/TokenTests.scala b/src/library/scala/xml/parsing/TokenTests.scala similarity index 100% rename from sources/scala/xml/parsing/TokenTests.scala rename to src/library/scala/xml/parsing/TokenTests.scala diff --git a/sources/scala/xml/parsing/ValidatingMarkupHandler.scala b/src/library/scala/xml/parsing/ValidatingMarkupHandler.scala similarity index 100% rename from sources/scala/xml/parsing/ValidatingMarkupHandler.scala rename to src/library/scala/xml/parsing/ValidatingMarkupHandler.scala diff --git a/sources/scala/xml/path/Expression.scala b/src/library/scala/xml/path/Expression.scala similarity index 100% rename from sources/scala/xml/path/Expression.scala rename to src/library/scala/xml/path/Expression.scala diff --git a/sources/scala/xml/transform/BasicTransformer.scala b/src/library/scala/xml/transform/BasicTransformer.scala similarity index 100% rename from sources/scala/xml/transform/BasicTransformer.scala rename to src/library/scala/xml/transform/BasicTransformer.scala diff --git a/sources/scala/xml/transform/RewriteRule.scala b/src/library/scala/xml/transform/RewriteRule.scala similarity index 100% rename from sources/scala/xml/transform/RewriteRule.scala rename to src/library/scala/xml/transform/RewriteRule.scala diff --git a/sources/scala/xml/transform/RuleTransformer.scala b/src/library/scala/xml/transform/RuleTransformer.scala similarity index 100% rename from sources/scala/xml/transform/RuleTransformer.scala rename to src/library/scala/xml/transform/RuleTransformer.scala diff --git a/sources/scala/xml/xsd/ContentModel.scala b/src/library/scala/xml/xsd/ContentModel.scala similarity index 100% rename from sources/scala/xml/xsd/ContentModel.scala rename to src/library/scala/xml/xsd/ContentModel.scala diff --git a/sources/scala/xml/xsd/Decl.scala b/src/library/scala/xml/xsd/Decl.scala similarity index 100% rename from sources/scala/xml/xsd/Decl.scala rename to src/library/scala/xml/xsd/Decl.scala diff --git a/sources/scala/xml/xsd/XsTypeSymbol.scala b/src/library/scala/xml/xsd/XsTypeSymbol.scala similarity index 100% rename from sources/scala/xml/xsd/XsTypeSymbol.scala rename to src/library/scala/xml/xsd/XsTypeSymbol.scala diff --git a/sources/msil/AssemblyInfo.cs.tmpl b/src/msil-library/AssemblyInfo.cs.tmpl similarity index 100% rename from sources/msil/AssemblyInfo.cs.tmpl rename to src/msil-library/AssemblyInfo.cs.tmpl diff --git a/sources/msil/scala/runtime/compat/Math.scala b/src/msil-library/scala/runtime/compat/Math.scala similarity index 100% rename from sources/msil/scala/runtime/compat/Math.scala rename to src/msil-library/scala/runtime/compat/Math.scala diff --git a/sources/msil/scala/runtime/compat/Platform.scala b/src/msil-library/scala/runtime/compat/Platform.scala similarity index 100% rename from sources/msil/scala/runtime/compat/Platform.scala rename to src/msil-library/scala/runtime/compat/Platform.scala diff --git a/sources/msil/scala/runtime/compat/StringBuilder.scala b/src/msil-library/scala/runtime/compat/StringBuilder.scala similarity index 100% rename from sources/msil/scala/runtime/compat/StringBuilder.scala rename to src/msil-library/scala/runtime/compat/StringBuilder.scala