| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
SI-7883 - don't iterate over all keys in MapWrapper.containsKey()
|
| | |
|
| | |
|
|\ \
| | |
| | | |
Prevent useless filter operation in docs
|
| | | |
|
|\ \ \
| | | |
| | | | |
IterableLike grouped : fix documentation
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
scala> Seq(1,2,3).grouped(2).toList
res1: List[Seq[Int]] = List(List(1, 2), List(3))
|
|\ \ \ \
| | | | |
| | | | | |
Tests for protected access
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
I've marked a few minor cases in the test with !!! where I believe
the behaviour goes beyond the spec.
|
| | | | |
| | | | |
| | | | |
| | | | | |
c39f26382dddaa7 fixed the bug but didn't commit a test case.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Filter JVM debug output for custom options in partest
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The Picked up _JAVA_OPTIONS line occurs on Sun's JDK as a debug output when you use that variable to set up custom VM options
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
SI-6840 fixes weird typing of quasiquote arguments
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Previously quasiquote arguments were type checked against Any
which caused weird inference that made splicing of complex expressions
unusable:
val l1 = List(q"foo")
val l2 = List(q"bar")
q"f(..${l1 ++ l2})" // argument type checked as Any instead of List[Tree]
This is fixed by forcing compiler to type check against type
variable which itself isn't used in any other way.
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
better macro impl shape errors
|
| |/ / / / / /
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
With the advent of quasiquotes, we allowed both arguments and return types
of macro impls to be c.Tree's (as opposed to traditional c.Expr[T]'s).
This warrants an update of macro def <-> macro impl signature mismatch
errors that include a printout of suggested macro impl signatures. Now
along with a signature that contains exprs, we suggest another signature
that has all exprs replaced by trees
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Deterministic warnings for pattern matcher, take 2
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
The previous swing at determinism, ebb01e05cbe4, made decent
contact but apparently didn't hit it out of the park. The test
wavered every hundred or so runs, as witnessed occasionally in
nightly builds or pull request validation.
I setup a test to run neg/7020.scala a few hundred times, and
could trigger the failure reliably.
I then swept through the pattern matcher in search of HashMap and
HashSet creation, and changed them all to the Linked variety.
The results of that are published in retronym#ticket/7020-3 [1].
This commit represents the careful whittling down of that patch
to the minimal change required to exhibit determinism.
[1] https://github.com/retronym/scala/compare/ticket/7020-3
|
|\ \ \ \ \ \ \ \
| | | | | | | | |
| | | | | | | | | |
SI-7519: Additional test case covering sbt/sbt#914
|
| | |/ / / / / /
| |/| | | | | | |
|
|\ \ \ \ \ \ \ \
| | | | | | | | |
| | | | | | | | | |
fixes handling of fancy nested classes in runtime reflection
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
Replaces the `jclazz.isMemberClass` check for whether we have an
inner/nested class with `jclazz.getEnclosingClass != null`, because there
exist classes produced by javac (see the attached jar file and the test log)
which have the following properties:
* They are nested within a parent class
* getEnclosingClass returns a non-null value
* isMemberClass returns false
Previously such classes were incorrectly treated as non-nested, were
incorrectly put into an enclosing package rather than an enclosing class,
and had their names trimmed in the process, leading to situations when
a package has multiple declarations with the same name. This is now fixed.
When changing the check, we need to be careful with interpretation of
what Class.getEnclosingXXX methods return. If getEnclosingClass produces
a non-null result, this doesn't mean that the class is inner or nested,
because getEnclosingClass is also not null for local classes (the ones
with getEnclosingMethod != null || getEnclosingConstructor != null).
This is expressed in the order of pattern match clauses in `sOwner`.
Now when the bug is fixed, I also revert b18a2f8798b2, restoring a very
important integrity check in runtime reflection, which I had to disable
a couple hours ago to fix a master breakage. More details at scala-internals:
https://groups.google.com/forum/#!topic/scala-internals/hcnUFk75MgQ
|
|\ \ \ \ \ \ \ \ \
| | | | | | | | | |
| | | | | | | | | | |
temporarily disables run/reflection-sync-subtypes
|
|/ / / / / / / / /
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
This test has been a source of spurious failures as in, for example
https://github.com/scala/scala/pull/3029#issuecomment-26811129,
so I'm disabling it for the time being while I investigate the issue.
|
|\ \ \ \ \ \ \ \ \
| |_|_|/ / / / / /
|/| | | | | | | | |
deprecates raw tree manipulation facilities in macros.Context
|
| | | | | | | | | |
|
| | |_|_|_|_|/ /
| |/| | | | | | |
|
|\ \ \ \ \ \ \ \
| | | | | | | | |
| | | | | | | | | |
Moving disabled tests to their rightful home.
|
|/ / / / / / / /
| | | | | | | |
| | | | | | | |
| | | | | | | | |
test/disabled, not test/files/disabled.
|
|\ \ \ \ \ \ \ \
| | | | | | | | |
| | | | | | | | | |
Platform independence for test case
|
|/ / / / / / / /
| | | | | | | |
| | | | | | | |
| | | | | | | | |
File.pathSeparator, rather than ":"
|
|\ \ \ \ \ \ \ \
| | | | | | | | |
| | | | | | | | | |
Fix problem assembling sources and docs of modules.
|
| | |_|/ / / / /
| |/| | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
A recent commit added 'overwrite=true' to all usages of the
Ant copy task.
This was enough to show up a bug in our dist.src and dist.docs
tasks, as was seen on the Windows build:
Failed to copy:
C:\Users\scala\.m2\repository\org\scala-lang\modules\scala-xml_2.11.0-M5\1.0-RC4\scala-xml_2.11.0-M5-1.0-RC4-javadoc.jar to
H:\jenkins\workspace\scala-nightly-windows\dists\scala-2.11.0-20131019-064627-8848f24161\doc\scala-devel-docs\C:\Users\scala\.m2\repository\org\scala-lang\modules\scala-xml_2.11.0-M5\1.0-RC4\scala-xml_2.11.0-M5-1.0-RC4-javadoc.jar ...
This commit uses a "flattening" copy to put the JARs directly into
scala-devel-docs.
The Ant docs note [1] this gotcha:
> Note that some resources (for example the file resource) return
> absolute paths as names and the result of using them without
> using a nested mapper (or the flatten attribute) may not be what
> you expect.
These appear to be the only places we fell into the trap:
ack '<file\b' --xml
build.xml
1948: <file file="${scala-xml-javadoc}"/>
1949: <file file="${scala-parser-combinators-javadoc}"/>
1992: <file-sets/>
2007: <file file="${scala-xml-sources}"/>
2008: <file file="${scala-parser-combinators-sources}"/>
[1] http://ant.apache.org/manual/Tasks/copy.html
|
|\ \ \ \ \ \ \ \
| |/ / / / / / /
|/| | | | | | | |
hotfix for reflection tests on Windows
|
|/ / / / / / /
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Removes the Unix-specific command-line sanity check put in place in recently
committed reflection tests.
On Windows, something like `C:\Java\jdk1.6.0_24-x64\jre\bin\java` might
be a valid command (pointing to `java.exe` or `java.bat`) even if
the eponymous file does not exist.
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Add support for packages into quasiquotes and toolbox, improve handling of fresh names, unhardcode quasiquote expansion logic
|
| | | | | | | | |
|
| | | | | | | | |
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
This should ensure that concurrent access to the
fresh name creator is properly synchronized.
|
| | | | | | | | |
|
| | | | | | | | |
|
| | | | | | | | |
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
This commit extracts out freshTermName and freshTypeName to the top-level
with implicit fresh name creator argument. This will let to refactor out
more methods out of tree builder into treegen that are dependent on fresh
name generator. We also save quite a bit of boilerplate by not having to
redefined fresh functions all over the place.
|
| | | | | | | | |
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
For sake of consistency with noSelfType.
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
emptyValDef should always be reified as emptyValDef. After the the
introduction of SyntacticValDef this ceased to be true.
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
As it was pointed out by @paulp current isCaseDefStart method's name
doesn't really correspond to one of it's primary usages: checking if
the block within case has reached it's end.
|
| | | | | | | | |
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
During parsing some names are generated artificially using freshTermName & freshTypeName (e.g. `x$1`). Such names should be reified in a different way because they are assumed to be always fresh and non-overlapping with the environment. So `x$1` should reify down to equivalent of `freshTermName("x$")` rather than `TermName("x$1")`.
But this is not enough. One name can be used more than once in a tree. E.g. `q"_ + 1"` desugars into `q"x$1 => x$1 + 1"`. So we need to ensure that every place where `x$1` is used gets the same fresh name. Hence the need for `withFreshTermName` that lets q"_ + 1" quasiquote desugare into equivalent of `withFreshTermName("x$") { freshx => q"$freshx => $freshx + 1" }`.
For pattern quasiquotes it's a bit different. Due to the fact that end-result must be a pattern we need to represent fresh names as patterns too. A natural way to express that something is fresh is to represent it as a free variable (e.g. any name will do in that place). But due to possible use of the same name in multiple places we need to make sure that all such places have the same values by adding a sequence of guards to the pattern.
Previously such names were reified naively and it could have caused name collision problems and inability to properly much on trees that contain such names.
|