summaryrefslogtreecommitdiff
path: root/test/junit
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #4030 from som-snytt/issue/8843Grzegorz Kossakowski2014-10-072-3/+141
|\ | | | | SI-8843 AbsFileCL acts like a CL
| * SI-8843 AbsFileCL acts like a CLSom Snytt2014-10-062-3/+141
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Let the AbstractFileClassLoader override just the usual suspects. Normal delegation behavior should ensue. That's instead of overriding `getResourceAsStream`, which was intended that "The repl classloader now works more like you'd expect a classloader to." (Workaround for "Don't know how to construct an URL for something which exists only in memory.") Also override `findResources` so that `getResources` does the obvious thing, namely, return one iff `getResource` does. The translating class loader for REPL only special-cases `foo.class`: as a fallback, take `foo` as `$line42.$read$something$foo` and try that class file. That's the use case for "works like you'd expect it to." There was a previous fix to ensure `getResource` doesn't take a class name. The convenience behavior, that `classBytes` takes either a class name or a resource path ending in ".class", has been promoted to `ScalaClassLoader`.
* | Merge pull request #4016 from lrytz/t8731Grzegorz Kossakowski2014-10-072-0/+42
|\ \ | |/ |/| SI-8731 warning if @switch is ignored
| * SI-8731 warning if @switch is ignoredLukas Rytz2014-10-062-0/+42
| | | | | | | | | | For matches with two or fewer cases, @switch is ignored. This should not happen silently.
* | Better ant / junit interactionAntoine Gourlay2014-09-2912-6/+3
|/ | | | | | | | | | | | | Currently junit test sources are always rebuilt, that's wasteful. The second dependency on the junit task is there so that the first can be skipped if sources haven't changed. Also normalize package names versus location in the `test/junit` folder: ant isn't very clever when it comes to selectively recompiling tests, so now editing a test will only cause that one to be recompiled (instead of ~13 files every time). This makes TDD with junit even faster.
* Get rid of Platform.doLoad method.Grzegorz Kossakowski2014-09-241-1/+0
| | | | Since .NET backend got removed this method is a no-op.
* Merge pull request #3941 from Ichoran/issue/8815Lukas Rytz2014-09-161-0/+15
|\ | | | | SI-8815 mutable.LongMap makes different choices for splitAt vs etc.
| * SI-8815 mutable.LongMap makes different choices for splitAt vs etc.Rex Kerr2014-09-111-0/+15
| | | | | | | | | | | | | | | | | | | | It turns out that take/drop/splitAt/takeWhile/dropWhile inherit a smattering of foreach vs. iterator-based implementations. These aren't consistent unless they iterate in the same order. This probably reflects an undesirable underlying weakness, but in this particular case it was easy to make LongMap's foreach order agree with iterator. Made traversal order of other foreach-like methods match also. Also fixed a bug where Long.MinValue wasn't iterated. Added unit test for iteration coverage of extreme values.
* | Remove stale local variables and exception handlers after DCELukas Rytz2014-09-105-7/+215
| | | | | | | | | | | | This is required for correctness of the generated bytecode. Exception handlers and local variable descriptors specify code offset ranges. These offsets have to exist, not be eliminated.
* | Clarify why we emit ATHROW after expressions of type NothingLukas Rytz2014-09-102-6/+50
| | | | | | | | Tests for emitting expressions of type Nothing.
* | Tools to run the compiler in JUnit testsLukas Rytz2014-09-102-0/+115
| |
* | JUnit tests for dead code elimination.Lukas Rytz2014-09-104-2/+199
|/ | | | JUnit tests may use tools from partest-extras (ASMConverters)
* Merge pull request #3946 from gourlaysama/wip/t5254Grzegorz Kossakowski2014-09-091-0/+23
|\ | | | | SI-5254 running an empty scala script should succeed
| * SI-5254 running an empty scala script should succeedAntoine Gourlay2014-08-261-0/+23
| | | | | | | | | | | | | | | | | | | | The script runner made the assumption that "compilation succeeded" implies "there is a Main class to run", but this can be wrong if the script is empty (or only contains imports/comments). The ScriptRunner now uses the ClassPath utility to check if there really is a main class. If not, it doesn't try to run it and returns peacefully. This also makes `scala -e ''` succeed.
* | Address PR feedback, fix MultiChoiceSetting.containsLukas Rytz2014-09-081-0/+2
| |
* | Use Enumeration for MultiChoiceSettingSom Snytt2014-09-051-1/+45
| | | | | | | | | | | | | | | | | | | | | | This is pretty easy, since a ValueSet is a BitSet. When the setting is updated, recompute the current set of values, which is cheap and succinct. Checking a flag is also easy and fast. Choices in MultiChoiceSettings may enable other choices.
* | -Ystatistics accepts a list of phases, cleanups in MultiChoiceSettingLukas Rytz2014-09-021-1/+62
| | | | | | | | | | MultiChoiceSetting and Xlint with its deprecated aliases is now a bit simpler, but there's still room for improvement, as noted in comments.
* | Fix assertThrows, and the behaviors that it shadowedLukas Rytz2014-09-024-6/+12
| | | | | | | | | | | | The test in StdNamesTest was introduced in cff8b569, where newTermName would throw on a negative length. In b090f97 this was changed to fix the negative length, but the test was not adapted (as it didn't fail).
* | Merge pull request #3931 from lrytz/opt/tracked-finalLukas Rytz2014-09-011-34/+21
|\ \ | | | | | | GenBCode refactoring (remove Tracked) and fix InnerClass / EnclosingMethod attributes
| * | Remove Tracked, add type information to ClassBTypeLukas Rytz2014-08-191-34/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this change, a ClassBType was just a name. The `exemplars` map stored a Tracked instance for every ClassBType. Tracked stored type information that is required later in the backend when things may run concurrently. In particular: superclass, interfaces, flags and information for emitting the InnerClass attribute. Now we put all the information stored in Tracked directly in the ClassBType. There is still one hash map: `classBTypeFromInternalNameMap` maps a JVM internal class name (e.g. "scala/Predef$") to the corresponding ClassBType. This map is used during bytecode generation, when the ASM framework computes stack map frames. In order to compute stack map frames, the ASM framework needs to be able to get the LUB of two types. The default implementation uses reflection to get type information, however that doesn't work in our case: the classes we compile are not on the classpath. So instead, the backend overwrites the method `getCommonSuperClass` of the ClassWriter. This method receives two class internal names and computes their LUB. This is done by looking up the ClassBTypes in the `classBTypeFromInternalNameMap` and invoking `jvmWiseLUB`. This commit was reviwed in https://github.com/scala/scala/pull/3855. It consists of all commits labelled [squash-after-review], squashed into one.
* | | Merge pull request #3949 from lrytz/t8627Grzegorz Kossakowski2014-08-271-0/+18
|\ \ \ | |_|/ |/| | SI-8627 make Stream.filterNot non-eager
| * | SI-8627 make Stream.filterNot non-eagerLukas Rytz2014-08-271-0/+18
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The obvious fix, overriding `filterNot` in Stream, is not binary compatible, see https://github.com/scala/scala/pull/3925 Instead, this makes `filterImpl` in TaversableLike private[scala], which allows overriding it in Stream. The corresponding mima-failures can be whitelisted, as the changes are only to private[scala]. In 2.12.x we can remove the override of `filter` in Stream, but in 2.11.x this is not binary compatible. Eventually we'd also like to make filter / filterNot in TraversableLike final, but that's not source compatible, so it cannot be done in 2.12.x.
* | Merge pull request #3923 from som-snytt/issue/8787Grzegorz Kossakowski2014-08-191-0/+17
|\ \ | |/ |/| SI-8787 Regextraction is null-proof
| * SI-8787 If you love nulls, so does RegexSom Snytt2014-08-081-0/+17
| | | | | | | | Regex is robust when unapplying null. A null never matches.
* | SI-8512 Infer Any for the qSom Snytt2014-08-121-0/+23
| | | | | | | | | | | | | | | | | | Avoid the widening bug for q. This resolution also suffers from the inference of Any, which can trigger a warning and an anxiety attack. But that's still better than doing the wrong thing. Right?
* | SI-8512 Infer a type for f"$args"Som Snytt2014-08-121-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | The f-interpolator gets a type param that better be Any to avoid unfortunate widenings. Hey, it worked! Unfortunately, when `Any` is inferred, `-Xlint:infer-any` takes notice. This is probably a greater problem for the f-interpolator than for quasiquotes, which are a more specialized tool.
* | SI-6476 DocumentationSom Snytt2014-07-181-0/+14
|/ | | | And adjust the test.
* SI-8525 Clarify usage of -Xlint:_,flagSom Snytt2014-07-161-15/+9
| | | | | | | | | | | | | | | | | | | | | Also clarify usage of -Xlint flag. Align more with javac -Xlint:all,-flag,flag where once a flag is explicitly enabled it cannot be disabled, but where the wildcard is a backstop only. (There is no all option yet here.) -Xlint and -Xlint:_ just set a flag which is consulted by any unset lint warning. Xlint warnings consult the state of Xlint when they are unset. Individual -Ywarn-ings do not. Other warnings are explicitly set to false. They can only be enabled programmatically. Some tests are corrected. Also, option order is no longer significant, see the unit test.
* SI-8525 No anonymous lintSom Snytt2014-07-101-3/+3
| | | | | | | | | Turn anonymous references to `settings.lint` into named settings. After that, trust to Adriaan to make them filterable. There are a few remaining top-level -Y lint warnings that are deprecated.
* SI-8525 Add -Xlint:-warn-missing-interpolatorSom Snytt2014-07-081-2/+16
| | | | | | | | | | Turn off lint warnings with negating prefix, and add a lint-only warning for the infamously nagging "Did you forget the interpolator?" That message is made more dignified. Without `-Xlint:false`, there is no mechanism to turn off anonymous linters once `-Xlint` is selected.
* Remove deprecationWarning, currentReporting from ReportingAdriaan Moors2014-07-041-0/+7
| | | | | | | | This moves us a bit closer to the goal of having a single entry point to reporting. Must modularize Reporting a bit so it can be used in Variances (need a reference to `currentRun` in `reflect.internal.Reporting`).
* Uniformly route reporting through reporter.Adriaan Moors2014-07-041-0/+5
| | | | | | | | | | | | Sharpen interfaces, reduce footprint of Reporting trait. Ideally, all reporting should indirect through reporter, and the `Reporting` trait itself should be restricted to a single method that retrieves the current `reporter`. Pull up some more reporting to reflect.internal. Would like to do more, but need to move partest to the reflect.internal interface first. (Its `errorCount` relies on `ERROR.count` in `tools.nsc.Reporter`.)
* Merge pull request #3736 from VladimirNik/print-types-issue-2.11.xAdriaan Moors2014-07-031-26/+51
|\ | | | | SI-8447 fix TypeTree printing (2.11.x)
| * TypeTree printing modified (SI-8447)VladimirNik2014-05-091-26/+51
| |
* | SI-8611 Avoid accidental patmat unification with refinement typesJason Zaugg2014-06-101-0/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the enclosed test, t8611a.scala, the patterns `O.{A, B}` were incorrect treated as equivelent by the combination of `uniqueTpForTree` and `Const.uniqueTpForTree`. `uniqueTpForTree` used `Type#narrow` to try to create a distinct type for each new pattern tree it encountered. However, narrowing a `RefinedType` does not create a distinct type as we are used to when narrowing, e.g. a class type. // Type def narrow: Type = if (phase.erasedTypes) this else { val cowner = commonOwner(this) refinedType(this :: Nil, cowner, EmptyScope, cowner.pos).narrow } // CompoundType override def narrow: Type = typeSymbol.thisType This commit creates a fresh existential type symbol rather than trying to use `narrow`. I've included a unit test to show the sublteties of narrowing refinment types.
* | Merge pull request #3743 from ruippeixotog/issue/8553Ichoran2014-06-041-0/+16
|\ \ | | | | | | SI-8553 WrappedArray throws exception on lastIndexWhere when index out of range
| * | SI-8553 WrappedArray throws exception on lastIndexWhere when index out of rangeRui Gonçalves2014-05-121-0/+16
| |/ | | | | | | | | | | | | | | | | Adds a check in `IndexedSeqOptimized#lastIndexWhere(A => Boolean, Int)` to begin searching in the end of the collection if `end` is greater than the collection's length. Discussed in https://groups.google.com/d/topic/scala-internals/-MacXivbY0Q/discussion.
* | Merge pull request #3796 from som-snytt/issue/8630Adriaan Moors2014-06-031-0/+5
|\ \ | | | | | | SI-8630 lineToString no longer long by one at eof
| * | SI-8630 lineToString no longer long by one at eofSom Snytt2014-05-271-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | One more EOL crasher, or lack-of-EOL crasher, when the text is at EOF. It was not caught by the last round of excellent and thorough tests because ``` // If non-whitespace tokens run all the way up to EOF, // positions go wrong because the correct end of the last // token cannot be used as an index into the char array. // The least painful way to address this was to add a // newline to the array. ```
* | | Merge pull request #3795 from som-snytt/issue/8475Adriaan Moors2014-06-031-0/+8
|\ \ \ | | | | | | | | SI-8475 GroupedIterator is also lazy when padded
| * | | SI-8475 GroupedIterator is also lazy when paddedSom Snytt2014-05-271-0/+8
| |/ / | | | | | | | | | | | | | | | | | | | | | This is the related case which dnlgtm in the previous fix. The old code seems to be tilting for laziness, but we have to fill the buffer with the current group anyway, so there is no reason to be coy about calling ArrayBuffer.length.
* | | Merge pull request #3774 from lrytz/opt/backendWipLukas Rytz2014-06-013-6/+210
|\ \ \ | |/ / |/| | More type safe implementation of BType, cleanups in GenBCode
| * | Unit tests for reflect/internal/NamesLukas Rytz2014-06-011-0/+95
| | |
| * | Unit tests for new BType classesLukas Rytz2014-06-012-6/+115
| | |
* | | Merge pull request #3733 from retronym/topic/pr-3712-resubmitJason Zaugg2014-05-271-0/+20
|\ \ \ | | | | | | | | SI-8475 Fix off by one in GroupedIterator when Streaming
| * | | SI-8475 Fix off by one in GroupedIterator when StreamingJean-Remi Desjardins2014-05-091-0/+20
| | | | | | | | | | | | | | | | This also affected sliding and grouped since they defer to GroupedIterator
* | | | Optimize nested scope creationJason Zaugg2014-05-261-0/+54
| |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can copy the hash table from the parent scope, rather than constructing it from scratch. This takes us to: % rm -rf /tmp/pkg; (for i in {1..50}; do for j in {1..100}; do echo "package pkg { class A_${i}_${j}___(val a: Int, val b: Int) }"; done; done) > sandbox/A1.scala && time qbin/scalac -Ybackend:GenASM -J-Xmx1G -J-XX:MaxPermSize=400M -d /tmp sandbox/A1.scala; real 0m19.639s // head~1 was 0m35.662s user 0m41.683s // head~1 was 0m58.275s sys 0m1.886s In more detail, this commit: - Removes the unused `fingerprint` constructor parameter from scopes. This is a remnant from a previous optimization attempt - Leave only one constructor on Scope which creates an empty scope - Update the factory method, `newNestedScope`, to copy the hash table from the parent if it exists. We can rely on the invariant that `outer.hashTable != null || outer.size < MIN_HASH)`, so we don't need `if (size >= MIN_HASH) createHash()` anymore. This used to be needed in `Scope#<init>`, which accepted an aribitrary `initElems: ScopeEntry`. - Update subclasses and factories of `Scope` in runtime reflection to accomodate the change. Pleasingly, we could actually remove the override for `newNestedScope`. - Unit tests the functionality I'm touching
* | | SI-8507 Avoid lazy val in StringContextSom Snytt2014-05-131-0/+51
| |/ |/| | | | | | | | | | | | | | | This mild refactor eliminates the lazy val StringBuilder and arguably makes the code easier to read. There is a small unit test but no benchmark to prove anything useful about performance. The ticket notes contention due to lazy implementation.
* | SI-8504 fix NPE in the Java wrapper for a Scala Map.Antoine Gourlay2014-04-291-0/+10
|/ | | | MapWrapper blindly calls .hashCode on keys that can very well be null.
* Printers tests uncommentedVladimirNik2014-03-132-1171/+1163
|