| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
Avoid null checks when emitting "".== and SomeModule.==
|
| |
| |
| |
| |
| |
| |
| |
| | |
- Directly count null checks, rather than diffing the textual
bytecode of the entire method
- Add a test to show that the LHS needs to be a direct module
reference, not just a tree with a module type, to elide the
null check.
|
| |
| |
| |
| | |
For the same reasons outlined in the previous commits.
|
| |
| |
| |
| |
| | |
For which we can also elide the null check, and will in the
next commit.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Although the same the code would be later optimized by -Yconst-opt,
we can offer the same lean byte code to those compiling without that
option by being more discerning when translating ==.
This helps people using bytecode based code coverage tools
such as jacoco that would emit "branch not covered" warnings
for the impossible null check.
|
| |
| |
| |
| | |
Will be somewhat leaner after the next commit.
|
|\ \
| | |
| | | |
Convenience methods from Try[T] => {Future, Promise}[T]
|
| | | |
|
|\ \ \
| | | |
| | | | |
Require Ant >= 1.8.2
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Reportedly our build fails with Ant earlier incarnations.
Time to raise the bar.
Tested by temporarily setting the requirement to 1.8.5 and observing:
% ant init
Buildfile: /Users/jason/code/scala/build.xml
desired.jars.uptodate:
boot:
init:
BUILD FAILED
/Users/jason/code/scala/build.xml:216: Ant version 1.8.5 is required. You are running Apache Ant(TM) version 1.8.4 compiled on May 22 2012
|
|\ \ \ \
| | | | |
| | | | | |
Fix SI-7862: MANIFEST.MF file for Scala sources
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | | |
In order to be able to use published Scala jars as OSGi bundles in the
Eclipse build, Eclipse needs to match sources and binaries. That is
done by making source jars *source bundles*. This PR adds the required
manifest entries. Nothing else should be affected (file names remain
the same).
|
|\ \ \ \
| |/ / /
|/| | | |
Add test case for SI-6719
|
|/ / /
| | |
| | |
| | |
| | |
| | | |
The bug itself was fixed earlier in 95fe19545d60ae9aa79d2c8d5665c7f3b0cbdb1a
It was caused by improper wrapping of blocks in the toolbox's parse method.
|
|\ \ \
| | | |
| | | | |
Parser and position improvements.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The parser hole I found while working on the generated positions
serves as the umbrella for a host of improvements. Upgraded
positions assigned during some specific challenging situations mostly
involving the creation of synthetic trees, e.g. for comprehensions
and closures. While doing so improved some error messages.
Eliminated some of the most glaring duplication in the parser.
It's written like there is some payoff associated with being
spectacularly imperative. Not so far.
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Can't ensure range position points are meaningful when we never
see them. To limit noise, only print the point when it != start.
[x:y] // point=x, start=x, end=y
[p/x:y] // point=p, start=x, end=y
I'm open to a different syntax.
Also prints NoPosition as [X] rather than [NoPosition] because
noise is for construction workers and attenders of rock concerts.
Some range position and parser tests are included so we can see
the checkfile change when the forthcoming fix happens (either an
error message improvement or a positional one.)
|
|\ \ \
| |/ /
|/| | |
Cautiously give PC more control over docComments table
|
| | | |
|
|/ / |
|
|\ \
| | |
| | | |
Type housekeeping.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Moved ListOfNil somewhere more generally accessible. No
reason the compiler should hoard it for itself. Flitted
to a few locations with constructs like ".head.head" and
".tail.head" looking for code which could be rewritten. Found
some, admittedly not always making use of ListOfNil.
Made overdue moves of ConstantType(Constant(true|false|null))
to vals in Definitions.
|
|\ \ \
| | | |
| | | | |
Cull extraneous whitespace.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
One last flurry with the broom before I leave you slobs to code
in your own filth. Eliminated all the trailing whitespace I
could manage, with special prejudice reserved for the test cases
which depended on the preservation of trailing whitespace.
Was reminded I cannot figure out how to eliminate the trailing
space on the "scala> " prompt in repl transcripts. At least
reduced the number of such empty prompts by trimming transcript
code on the way in.
Routed ConsoleReporter's "printMessage" through a trailing
whitespace stripping method which might help futureproof
against the future of whitespace diseases. Deleted the up-to-40
lines of trailing whitespace found in various library files.
It seems like only yesterday we performed whitespace surgery
on the whole repo. Clearly it doesn't stick very well. I suggest
it would work better to enforce a few requirements on the way in.
|
|\ \ \ \
| |_|/ /
|/| | | |
Silence pos/t3960's -Ycheck output.
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | | |
Someday someone will have to straighten out where output goes.
Clearly under current conditions, Console.err is not a good place.
I rerouted through unit.warning so the output will be swallowed
like all the other warnings.
|
|\ \ \
| |/ /
|/| | |
SI-7853 Regression in explicit outer
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Rather than localizing the fix to the outerAccessor, this
commit pushed the call to `memberType` into *all* usages of
`newValDef` and `newDefDef`.
The TPT of `applyOrElse` in synthetized partial functions must
be set explicitly to pass the pos/t7853-partial-function.scala.
Otherwise, the as-seen-from ends up cloning the type parameter
`B1` of `applyOrElse` as it transforms (questionably)
its bound from `List[Int @unchecked]` to `List[Int]`.
Partial Function synthesis was already a delicate area, and this
makes things more explicit which could be counted as an improvement.
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The attempt to placate pos/t4970.scala in 55c6fd4 roused another
dragon.
We've got two levers here: the type of the symbol of the outer
accessor, and the type of its DefDef.
They have been historically out of sync due to the vaguaries of
finalResultType (which is far less vague since 671e6e03c7), but
the finicky operation of ExplicitOuter now has a hard time when
we try to bring them into line.
This stuff is notoriously difficult to understand because the
trees you see from `-Xprint` show a tpt derived from the method
symbol's info, and discards the actual tpt in the tree.
Rather than letting `DefDef(acc)` call `TypeTree(sym)` and use
`sym.tpe_*.finalResultType`, this commit computes the member type
of the accessor from the current class and explicitly uses that as
the return type of the outer accessor def.
We should try to push this a little deeper. I tried to put it into
`def TypeTree`, but that broke, among others,
run/concurrent-stream.scala. Maybe `def DefDef` and `def ValDef`?
But a localised fix is the right start as it addresses the regression
in a minimal fashion to get the IDE building again.
|
|\ \
| | |
| | | |
Longer timeout for repl test.
|
|/ /
| |
| |
| |
| | |
15 seconds is crazy aggressive. I have fast hardware and it's still
really easy for a test to take to fifteen seconds under load.
|
|\ \
| | |
| | | |
Remove build.number.maven
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
I can't find any justification for having this information
in both build.number and build.number.maven.
They have drifted apart on the 2.10.x branch, although that
doesn't matter because build.number is correct, and loaded first,
and Ant properties are write-once.
I'm assuming that the Ant tasks in src/build/pack.xml are only
invoked through the <antcall>-s in ./build.xml.
Here's a test of that from the 2.10.x branch:
% cat build.number
#Tue Sep 11 19:21:09 CEST 2007
version.major=2
version.minor=10
version.patch=3
# This is the -N part of a version. if it's 0, it's dropped from maven versions.
version.bnum=0
# Note: To build a release run ant with -Dbuild.release=true
# To build an RC, run ant with -Dmaven.version.suffix=-RCN
% cat build.number.maven
version.major=2
version.minor=10
version.patch=0
% git diff
diff --git a/build.xml b/build.xml
index 3a83aa4..5cb952c 100644
--- a/build.xml
+++ b/build.xml
@@ -62,6 +62,9 @@ TODO:
<target name="distpack" depends="dist.done, docs.done">
<ant antfile="${src.dir}/build/pack.xml" target="pack-all.done" inheritall="yes" inh
+ <target name="distpack.maven.info">
+ <ant antfile="${src.dir}/build/pack.xml" target="pack-maven.info" inheritall="yes" i
+
<target name="distpack-maven" depends="dist.done, docs.done">
<ant antfile="${src.dir}/build/pack.xml" target="pack-maven.done" inheritall="yes" i
diff --git a/src/build/pack.xml b/src/build/pack.xml
index 20c4034..56863ff 100644
--- a/src/build/pack.xml
+++ b/src/build/pack.xml
@@ -133,6 +133,10 @@ MAIN DISTRIBUTION PACKAGING
<mkdir dir="${dists.dir}/maven/${version.number}"/>
</target>
+ <target name="pack-maven.info">
+ <echo message="version.patch = ${version.patch}"/>
+ </target>
+
<target name="pack-maven.libs" depends="pack-maven.start">
<macrodef name="mvn-copy-lib">
<attribute name="mvn.artifact.name"/>
% ant distpack.maven.info
Buildfile: /Users/jason/code/scala2/build.xml
distpack.maven.info:
pack-maven.info:
[echo] version.patch = 3
Notice how the stale `version.patch=0` in build.number.maven is
ignored.
|
|\ \ \
| | | |
| | | | |
SI-7847 Static forwarders for case apply/unapply
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
These were excluded in f901816b3f because at the time they
were compiler fiction and translated to calls to the case
class constructor or accessors.
But since they are now bona-fide methods (albeit still occasionally
bypassed as an optimization), we can expose them conveniently to our
Java brethren.
The cut-and-pastiness of GenBCode starts to hinder maintenance.
Here's a report of further duplication that we have to fix up
post haste: https://gist.github.com/retronym/6334389
|
|\ \ \ \
| |_|_|/
|/| | | |
Damage control related to AnyRef specialization
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Names like `T1$sp`, which can arise from `AnyRef` specialization,
were leading to negative length Names if they ever passed through
`unspecializedName` or `splitSpecializedName`. This code path was
touched when printing the tree of a certain AnyRef specialized
classes after specialization, such as `AbstractPartialFunction`
(which had such specialization until a few commits ago.)
This commit handles that case correctly, and generally hardens
against unexpected names, which could pop up from third party
classes.
The documentation for `splitSpecializedName` transposed the
class and method specializations. The things you discover
when you turn examples in documentation in to test cases!
In addition, we now require non-negative length and offset in
`newTermName`
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This was missed in cc3badae1
Compatibility classes for formerly specialized variants used
by Scalacheck have been added as a stopgap measure until we
publish the next milestone.
|
| |/ /
| | |
| | |
| | | |
In a sign of decreased optimism about that facility.
|
|\ \ \
| | | |
| | | | |
SI-6701, SI-7304, SI-6489, variable arity definitions refactoring
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Transform current arrays of symbols into function-like objects
that return NoSymbol at all places where corresponding arity isn't
available.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
1. macro parsing doesn't use toolbox any more but calls parser directly
2. in order for this to work parser has to be refactored to limit
usage of currentUnit and rewire it into parser's local unit
method which might use currentUnit for some parsers but will
user proper unit for UnitParser
3. similar change has to be done to make compilation unit's
reporter overridable
|
| | | | |
|
| | | | |
|
|\ \ \ \
| |_|/ /
|/| | | |
SI-7845 Disable test for JSR 233
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
For Paul, it steals focus when it runs.
For me, it fails with some platform specific extra output:
-ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider apple.applescript.AppleScriptEngineFactory could not be instantiated: java.lang.UnsatisfiedLinkError: no AppleScriptEngine in java.library.path
n: Object = 10
12345678910
So off to the holding pen for now.
|
|\ \ \
| | | |
| | | | |
SI-7844 Intellij setup.sh is not working for Ubuntu 12.04
|
| | | |
| | | |
| | | |
| | | | |
Added "-f" option to the command "rm"
|
|\ \ \ \
| | | | |
| | | | | |
SI-1909 SI-3832 SI-7007 SI-7223 Improved handling of larval objects
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
It's a clunky flag used to determine very early on whether
we're in the self-call, super-call or early-init section.
In SI-6666 / fd6125428, the check was improved to consider nesting.
But, that caused this regression, as Function's haven't been
translated to classes yet, so our check for enclosing non-term
owners failed wrongly flagged definitins body of a anonymous function
as INCONSTRUCTOR.
With this patch, we correctly flag:
class C extends D {
// INCONSTRUCTOR
() => {
!INCONSTRUCTOR
}
// INCONSTRUCTOR
}
|